2013-10-31 45 views
0

存在的記錄,我有如下兩個表:得到一個表犯規另一個表+ SQL服務器

表A:

AIID AID AName 
1  200 'A' 
2  200 'B' 
3  200 'C' 
4  300 'D' 
5  300 'E' 
6  400 'F' 
7  400 'G' 

Table B: 

BID AIID AID AName 
1  2  200 'B' 
2  6  400 'F' 

現在我需要從表A中的記錄,所有AIIDs通過明智的AID,其AIID比AID明智地大於AIID,還有任何新的AID記錄。

防爆,我需要從表A獲得以下行:

AIID AID AName 
3  200 'C' 
4  300 'D' 
5  300 'E' 
7  400 'G' 

一些機構可以建議如何編寫查詢呢?

謝謝,

回答

1

據我瞭解你的問題,這應該做到這一點;

SELECT TableA.* 
FROM TableA 
LEFT JOIN TableB 
    ON TableA.AID = TableB.AID 
AND TableA.AIID <= TableB.AIID 
WHERE TableB.BID IS NULL; 

它基本上做相反的,它發現所述的具有在B中的大於或等於條目,並消除它們的所有條目。其餘的都返回。

An SQLfiddle to test with

+0

'WHERE TableB.BID是NULL'這是什麼意思? – Dusht

+0

@Dusht結合'LEFT JOIN',這意味着TableB中沒有與'ON'子句相匹配的行。換句話說,TableB中沒有行具有相同的「AID」​​和更大或相同的「AIID」。 –

+0

@JoachimIsaksson,非常感謝!它真的工作.. – mmssaann

相關問題