Mysql
按另一個表的 COUNT 更新一列
這可能是一個幼稚的問題,但是這兩個查詢有什麼區別,哪個是首選?
UPDATE table1, (SELECT id,COUNT(*) idcount FROM table2 GROUP BY id) AS B SET table1.Freq = B.idcount WHERE table1.id=B.id
和
UPDATE table1 A INNER JOIN (SELECT id,COUNT(*) idcount FROM table2 GROUP BY id) B USING (id) SET A.Freq = B.idcount
相同的查詢。不同的連接語法。
第一個是舊式ANSI,後者是後來的ANSI。如果您必須在它們之間進行選擇,請選擇後者。
由於 USING 的限制(不能別名),我不會使用它們中的任何一個。而是寫成:
UPDATE table1 A INNER JOIN (SELECT id,COUNT(*) idcount FROM table2 GROUP BY id) as B ON B.id = A.id SET A.Freq = B.idcount
請參閱此 Oracle 答案,了解為什麼
USING
不首選:https ://stackoverflow.com/questions/456684/mixing-using-and-on-in-oracle-ansi-join這裡是 SQL Server 的類似討論:https ://stackoverflow.com/questions/1599050/ansi-vs-non-ansi-sql-join-syntax
通常,習慣於以可移植的方式編寫 SQL 語法。雖然您可能永遠不會移植您的程式碼,但您至少能夠將您的技能移植到多個數據庫中(這通常是一件很酷的事情,可以避免成為一招一式的小馬)。