我有一个查询,该查询从一个表中选择所有数据,并从另一表中选择特定的列,其中两列相等,另一列等于特定值。
SELECT table1.*, table2.column1, table2.column2 FROM table1
INNER JOIN table2 ON table1.column3=table2.column3
WHERE table1.column1='foo';
是否可以从table3.column1
和table3.column2
的{{1}}中提取table3
和table3.column3=table1.column3
?
更复杂的是,表3中的数据是可选的,可能并不总是存在。但是,我仍然希望查询返回table1和table2的数据,但其中table3.column4='bar'
和table3.column1
仅显示为NULL或EMPTY ...
我正在努力使自己摆脱困境,任何见识或帮助将不胜感激。
答案 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';
可以这样做。