【发布时间】:2012-03-21 23:18:52
【问题描述】:
大家好,我有一个关于 SQL 中的 AND 子句的具体问题。
以下两个 SQL 语句提供相同的输出:
SELECT * FROM Table1 t1 INNER JOIN Table2 t2 ON t1.id = t2.id AND t2.id = 0
SELECT * FROM Table1 t1 INNER JOIN Table2 t2 ON t1.id = t2.id WHERE t2.id = 0
请注意查询末尾的差异。在第一个中,我使用了 AND 子句(之前没有使用 WHERE 子句)。在第二个中,我使用 WHERE 来指定我的 id。
- 第一个语法正确吗?
- 如果是,第一个在性能方面是否更好(不使用 WHERE 子句进行过滤)?
- 我应该期待不同的输出与不同的查询吗?
感谢您的帮助。
【问题讨论】:
-
你可以看一下数据库生成的查询计划,看看有没有不同。对于 MySQL 数据库,您可以使用 EXPLAIN 语句执行此操作,对于其他数据库可能有类似的内容。
标签: mysql sql join inner-join