2017-07-26 39 views
-1

我已經在我的數據庫下面的SQL表A中應用不同:SQL WHERE條件(過濾器),每個組表

index, group, foo 
    1  A  2 
    2  A  2 
    3  A  0 
    4  A  1 
    5  B  2 
    6  B  1 
    7  C  1 

很少有更多的組,我需要在此基礎上篩選器表編寫一個查詢B.對於表A中的每個組,其索引應該等於或大於表B對同一組的索引_egt。

如果該組未在表B中列出,則該組不會被過濾。

index_egt, group 
    3  A  
    5  B  

預期結果:

index, group, foo 
    3  A  0 
    4  A  1 
    5  B  2 
    6  B  1 
    7  C  1 

回答

1

嘗試爲此,A.index> = B.index_egt將處理其中組在表B中列出的情況下和B.index_egt IS NULL將處理的情況下該組沒有列出:

SELECT 
A.index, 
A.group, 
A.foo 
FROM TableA AS A 
LEFT JOIN TableB AS B ON A.group=B.group 
WHERE A.index>=B.index_egt 
OR B.index_egt IS NULL 
1
select 
    a.* 
from 
    A a 
left join 
    B b ON b.group = a.group 
where 
    a.index >= b.index_egt OR b.index_egt IS NULL 
1

我總是喜歡這一招用聚結

SELECT a.* 
FROM a_table_with_no_name a 
LEFT JOIN b_table_with_no_name b ON b.group = a.group 
WHERE a.index >= COALESCE(b.index_egt,a.index)