Goo*_*bot 3 mysql performance join subquery update query-performance
这可能是一个幼稚的问题,但这两个查询有什么区别,哪个是首选?
UPDATE table1,
(SELECT id,COUNT(*) idcount FROM table2 GROUP BY id) AS B
SET table1.Freq = B.idcount WHERE table1.id=B.id
Run Code Online (Sandbox Code Playgroud)
和
UPDATE table1 A INNER JOIN
(SELECT id,COUNT(*) idcount FROM table2 GROUP BY id) B USING (id)
SET A.Freq = B.idcount
Run Code Online (Sandbox Code Playgroud)
同样的查询。不同的连接语法。
第一个是旧式 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
Run Code Online (Sandbox Code Playgroud)
请参阅此 Oracle 答案,了解为什么USING不首选:/sf/ask/31967911/
这是针对 SQL Server 的类似讨论:/sf/ask/111933531/
一般来说,习惯以可移植的方式编写 SQL 语法。虽然您可能永远不会移植代码,但您至少能够将您的技能移植到多个数据库(这通常是一件很酷的事情,可以避免成为只会一招的小马)。
| 归档时间: |
|
| 查看次数: |
27436 次 |
| 最近记录: |