在 MySQL 中对两个 INNER JOIN 进行或运算

OR'ing two INNER JOIN's in MySQL

是否可以对两个单独的 INNER JOIN 进行 OR 操作,以便结果集包含来自两个 INNER JOIN 中任一个的数据?例如,在 MySQL.

中是否可能出现以下情况
SELECT * FROM table1
(INNER JOIN table2 ON table1.column_name=table2.column_name)
OR
(INNER JOIN table3 ON table1.column_name=table3.column_name)

不,你不能这样做,一种方法是使用 union

SELECT * FROM table1 INNER JOIN table2 ON table1.column_name=table2.column_name
union
SELECT * FROM table1 INNER JOIN table3 ON table1.column_name=table3.column_name

您可以使用 UNION:

SELECT * FROM table1 INNER JOIN table2 ON table1.column_name=table2.column_name
UNION DISTINCT
SELECT * FROM table1 INNER JOIN table3 ON table1.column_name=table3.column_name

at https://dev.mysql.com/doc/refman/4.1/en/union.html 所述,UNION 结合了多个选择的结果。

你需要使用where

 select * from table1 
where

  (table1.column_name = (select table2.column_name from table2 inner join table1.column_name as  on table1.column_name = table2.column_name)) 

OR

  (table1.column_name = (select table3.column_name from table3   inner join table1.column_name as  on table1.column_name = table3.column_name)) 

在这里工作完美!