MySQL中通過乙個表的資料更新另乙個表的資料

2021-08-21 15:22:44 字數 646 閱讀 4166

高效能mysql中有乙個更新語句,讓我有點驚訝。

那就是如下這句:

update actor inner join film_actor using (actor_id) set actor.last_update=film_actor.last_update;
這個更新的是個什麼鬼,actor inner join film_actor using (actor_id)的結果不應該是個臨時表的嗎?

對這個臨時表中的資料進行更新,有什麼含義呢?

但是呢,這個操作確實是可以的,並且可以對actor中的資料進行相應的更新。

我覺得這個可能跟檢視的原理是相似的。

因為檢視是可以更新的。

我覺得這個臨時表應該就是乙個沒有儲存的檢視。

最後引用乙個mysql必知必會中22.2.5節中的一段話:

通常,檢視是可更新的(即,可以對它們使用insert、update和delete)。更新乙個檢視將更新其基表(檢視本身是沒有資料的)。如果你對檢視增加或刪除行,實際上是對其基表增加或刪除行。

但是,這其中需要注意的是

如果檢視定義中有以下操作,則不能進行檢視的更新的:

換句話說,許多都是不可更新的。這聽上去好像是乙個嚴重的限制,但實際上不是,因為檢視主要用於檢索資料。

Mysql中把乙個表的資料匯入另乙個表中

類別一 如果兩張張表 匯出表和目標表 的字段一致,並且希望插入全部資料,可以用這種方法 insert into 目標表select from 表 例如,要將 articles 表插入到 newarticles 表中,則可以通過如下sql語句實現 insert into newarticles sel...

mysql 從乙個表中查資料,插入另乙個表

類別一 如果兩張張表 匯出表和目標表 的字段一致,並且希望插入全部資料,可以用這種方法 insert into 目標表select from 表 例如,要將 articles 表插入到 newarticles 表中,則可以通過如下sql語句實現 insert into newarticles sel...

mysql從乙個表中拷貝資料到另乙個表中sql語句

這一段在找新的工作,今天面試時,要做一套題,其中遇到這麼一句話,從乙個表中拷貝所有的資料到另乙個表中的sql是什麼?原來我很少用到,也沒注意過這個問題,面試後我上網查查,回來自己親手寫了寫,測試了下,確實有的。現在我記錄下。這個語句是 insert into a select from b 這個語句...