在 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))
在这里工作完美!
是否可以对两个单独的 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))
在这里工作完美!