簡単な質問かもしれませんが、これら2つのクエリの違いは何ですか?
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
USING
が推奨されない理由については、このOracleの回答を参照してください: 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構文を書くことに慣れます。コードを移植することは決してできませんが、少なくともスキルを複数のデータベースに移植することができます(これは一般に、ワントリックのポニーにならないようにするためのクールな方法です)。