你是否必须加入表“ON”字段,或者你可以将它们等同于where where子句?

时间:2011-08-03 18:10:51

标签: mysql join

当我们执行

时,我们一直在进行一系列查询和查询
SELECT t.thing FROM table1 t JOIN table2 s WHERE t.something = s.somethingelse AND t.something = 1

它适用于除一个以外的所有查询。这一个查询永远挂起并崩溃了我们的服务器,但如果我们这样做,它显然有效:

SELECT t.thing FROM table1 t JOIN table2 s ON t.something = s.somethingelse WHERE t.something = 1

我们正在尝试确定问题是由于查询结构还是由于我们尝试查询的帐户中的某些损坏。

第一种语法是否正确?感谢。

3 个答案:

答案 0 :(得分:0)

您需要使用ON子句。虽然你也可以用逗号连接,例如:SELECT * FROM table1,table2;

希望有所帮助!

答案 1 :(得分:0)

有不同的ANSI格式..您可以使用

Select ...
   from tbl1 join tbl2 on tbl1.fld = tbl2.fld

OR

select ...
   from tbl1, tbl2
   where tbl1.fld = tbl2.fld...

显式连接是一种更常见的格式,您可以自己明确地向开发人员显示表的相关性,而不考虑过滤条件。

答案 2 :(得分:0)

你的第一个语法错过了ON。加入时,必须告知ON正在进行的连接字段。

我建议在WHERE上使用JOIN ON进行连接。

1)你的where子句更容易阅读,因为它不会被join where子句污染。 2)您的加入部分更易于阅读和理解。

我们都同意这两种方法都有效,但由于这些点,JOIN更好。

我的2美分