我正在处理一个棘手的问题并且不理解如何处理它,因为JOIN都没有给我理想的结果。
我有两张桌子:
Table1:
id
value
Tabel2:
id
table1_id
parameter (1,0)
value
我需要从Table_1中选择所有内容,但如果Table2中有一行,其中table1_id = table1.id和parameter = 1,我想在结果中包含table2.value。请注意,Table2中可能有多个行table1_id = table1.id,但只有一个参数= 1。
所以,我希望得到的结果
table1.id | table1.value | table2.parameter |table2.value
1 | v1 | |
2 | v1 | 1 | v2
3 | v1 | |
4 | v1 | 1 | v2
有人可以帮我查询。谢谢你的时间。
答案 0 :(得分:2)
SELECT *
FROM
Table1 LEFT JOIN Table2
ON (Table1.id = Table2.table1_id AND Table2.parameter = 1)
;
答案 1 :(得分:1)
您可以使用left join
和case when
来展示table2 value
select
t1.id,
t1.value,
t2.parameter,
case when t2.table_id is not null and t2.parameter = 1 then t2.value else null end as table2_value
from table1 t1
left join table2 t2 on t2.table1_id = t1.id