从3个MySQL表中提取数据

时间:2018-08-17 16:40:47

标签: mysql sql

我有一个查询,该查询从一个表中选择所有数据,并从另一表中选择特定的列,其中两列相等,另一列等于特定值。

SELECT table1.*, table2.column1, table2.column2 FROM table1 
INNER JOIN table2 ON table1.column3=table2.column3 
WHERE table1.column1='foo';

是否可以从table3.column1table3.column2的{​​{1}}中提取table3table3.column3=table1.column3

更复杂的是,表3中的数据是可选的,可能并不总是存在。但是,我仍然希望查询返回table1和table2的数据,但其中table3.column4='bar'table3.column1仅显示为NULL或EMPTY ...

我正在努力使自己摆脱困境,任何见识或帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

使用左联接:

SELECT table1.*, table2.column1, table2.column2, table3.column1, table3.column2
FROM table1 
INNER JOIN table2 
    ON table1.column3 = table2.column3 
LEFT JOIN table3
    ON table3.column3 = table1.column3 AND table3.column4 = 'bar'
WHERE table1.column1 = 'foo';

table3中没有对应的记录时table3.column1和table3.column2将为空

如果column1和column2名称在select子句中不是唯一的列名称,则需要给它们提供别名

答案 1 :(得分:0)

select t1.col1, t2.col2, t3.col3
from table1 as t1
inner join table2 as t2 on t2.col3.t1.col2
left join table3 as t3 on t3.col3.t2.col2
where t1.col1 = 'test';

可以这样做。