Mysql在一个表上选择多个表但内连接

时间:2012-01-28 12:08:37

标签: mysql inner-join multiple-tables

是否可以选择多个表并在其中一个表上进行内连接? e.g。

SELECT * 
FROM table1 AS t1, table2 AS t2, table3 AS t3
INNER JOIN table4 AS t4 ON t1.row3 = t4.row3
INNER JOIN table5 AS t5 ON t1.row4 = t5.row4
WHERE ...

这个特殊情况给我带来了麻烦。它给了我一个错误 - 'on clause'中的未知列“t1.row3”。我不知道是否可以选择多个表,但在其中一个表上进行内连接。

1 个答案:

答案 0 :(得分:7)

JOIN操作数的优先级高于逗号,操作数,因此连接被有效地视为

t1, t2, (t3, t4, t5 ON ... )

将括号括在t1,t2,t3附近。

SELECT * 
FROM  ( table1 AS t1, table2 AS t2, table3 AS t3 )
INNER JOIN table4 AS t4 ON t1.row3 = t4.row3
INNER JOIN table5 AS t5 ON t1.row4 = t5.row4
WHERE ...

您还可以将查询编写为:

SELECT * 
FROM  table1 AS t1
INNER JOIN table2 AS t2
INNER JOIN table3 AS t3
INNER JOIN table4 AS t4 ON t1.row3 = t4.row3
INNER JOIN table5 AS t5 ON t1.row4 = t5.row4
WHERE ...

因为逗号等同于没有连接条件的INNER JOIN。