我记得在某个地方/正在被告知/发明谣言(^ _ ^),以下两个查询在MySQL服务器的幕后是相同的:
SELECT *
FROM a
JOIN b
ON a.id = b.id
和
SELECT *
FROM a, b
WHERE a.id = b.id
这是真的吗?如果是这样,在其他方面是否优于备用? (例如解析效率或标准合规性)
答案 0 :(得分:1)
事实上是这样。第一个查询符合SQL-89标准,第二个查询符合SQL-92。
SQL-92标准引入了INNER JOIN .. ON
和OUTER JOIN .. ON
以替换SQL-89的更复杂(?)语法。
SQL-89中的外连接将是:
SELECT ...
FROM t1, t2
WHERE t1.id *= t2.id
在SQL-92中,它将是
FROM t1 OUTER JOIN t2 ON t1.id = t2.id
我确实比SQL-89更喜欢SQL-89,但我认为SQL Server 2008兼容性删除了对SQL-89连接语法的支持。
答案 1 :(得分:0)