1:
$query = mysql_query("
SELECT table_one.row
FROM table_one
INNER JOIN table_two
ON table_two.row = $id");
2:
$query = mysql_query("
SELECT table_one.row
FROM table_one, table_two
WHERE table_two.row = $id");
这些只是两种写同样的方式吗?
答案 0 :(得分:2)
他们都取得了相同的结果,但采用了不同的方法。虽然你滥用ON条款。
我会建议这样的事情:
$query = mysql_query("
SELECT table_one.row
FROM table_one
INNER JOIN table_two
ON table_one.id = table_two.id
WHERE table_two.row = $id");
从mysql网站引用:
与ON一起使用的conditional_expr是可以在WHERE子句中使用的表单的任何条件表达式。通常,您应该将ON子句用于指定如何连接表的条件,并使用WHERE子句来限制结果集中所需的行。
答案 1 :(得分:0)
是的,查询在语义上是相同的。
虽然两者都生产笛卡儿产品。
答案 2 :(得分:0)
第一个查询使用较新的ANSI-92语法,而第二个查询使用较旧的ANSI-89语法。两者都应该产生相同的结果。
此外,请阅读这篇文章:Why isn't SQL ANSI-92 standard better adopted over ANSI-89?
就个人而言,我希望大多数人都同意,我更喜欢使用“JOIN”语法的ANSI-92。正如在引用的帖子中提到的,它允许您将JOIN约束与WHERE或过滤器约束分开,从而提高可读性。