2015-09-15 90 views
2

我正在处理一个棘手的查询,只是不明白如何处理它,因为这两个JOIN都没有给出我想要的结果。MYSQL SELECT条件加入

我有两个表:

Table1: 
id 
value 

Tabel2: 
id 
table1_id 
parameter (1,0) 
value 

,我需要选择一切从TABLE_1,但如果在表2一排table1_id = table1.id和参数= 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 

有人可以帮我查询。感谢您的时间。

回答

2
SELECT * 
FROM 
    Table1 LEFT JOIN Table2 
    ON (Table1.id = Table2.table1_id AND Table2.parameter = 1) 
; 
+0

哇,它的工作! –

+0

@JohnW:upvote并将其标记为已解决:这是游戏规则:) –

1

您可以使用left joincase 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