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

woo*_*ata 1 mysql inner-join multiple-tables

是否可以选择多个表并在其中一个表上进行内连接?例如

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 ...
Run Code Online (Sandbox Code Playgroud)

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

pio*_*trm 7

JOIN操作数比逗号更高的优先级,操作,因此连接是有效治疗的

t1, t2, (t3, t4, t5 ON ... )
Run Code Online (Sandbox Code Playgroud)

将括号括在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 ...
Run Code Online (Sandbox Code Playgroud)

您还可以将查询编写为:

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 ...
Run Code Online (Sandbox Code Playgroud)

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