0

表1

Id           value
1               1
1               4

表2

id      Detailid          value
 1       1                 1
 1       2                 2
 1       3                 3
 1       4                 4
 1       5                 5
 1       6                 6

結果が欲しい

Id      Detaild      value
1        1           1
1        2          null
1        3          null 
1        4          4
1        5          null
1        6          null

以下のクエリでは、null を含む 2 つの余分な行が表示されます

select distinct t1.id,t2.detailid  
 ,case when t1.value IN(t2.Value) then t1.value else null end as value  
from table1 t1  
left outer join table2 t2  
on t1.id= t2.id 

私は得ています

Id       Detaild    value  
1        1          null ----dont need  
1        1          1  
1        2          null  
1        3          null   
1        4          null ---dont need  
1        4          4  
1        5          null  
1        6          null  
4

5 に答える 5

1

これは、Table1 に DetailId 2 と 3 への外部キーを持つ行がないためです。結合でそれらを返すにはどうすればよいでしょうか?

于 2013-08-16T13:54:06.430 に答える
1
SELECT t1.Id, t2.DetailId, t1.value 
FROM table1 AS t1 
LEFT OUTER JOIN table2 AS t2. ON t1.DetailId = t2.detailId 
WHERE t2.DetailId NOT IN (5,6);
于 2013-08-16T14:08:12.153 に答える