MySQL加入幕后

时间:2011-04-20 07:16:39

标签: mysql join

我记得在某个地方/正在被告知/发明谣言(^ _ ^),以下两个查询在MySQL服务器的幕后是相同的:

SELECT *
FROM a
JOIN b
ON a.id = b.id

SELECT *
FROM a, b
WHERE a.id = b.id

这是真的吗?如果是这样,在其他方面是否优于备用? (例如解析效率或标准合规性)

2 个答案:

答案 0 :(得分:1)

事实上是这样。第一个查询符合SQL-89标准,第二个查询符合SQL-92。

SQL-92标准引入了INNER JOIN .. ONOUTER 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)

是的,这些都是一样的。但它并不是Mysql特有的东西 - 它只是一种不同的连接方式。你在上面写的那个是新的和优先的