2012-10-09 115 views
3

我寫了一個查詢來獲取從表A中的代碼是不是在同一個ID表B中。我在查詢中對ID進行了硬編碼,我想知道如何爲所有不是539的ID獲得所需的輸出。下面是查詢內部查詢,並加入

SELECT 
    a.code 
FROM 
    A 
WHERE 
    a.code NOT IN(
     SELECT 
      b.code 
     FROM 
      B b 
     WHERE 
      b.ID='539' 
     AND b.status <> 'D') 
AND 
    (a.id='539') 
AND 
    (a.status <> 'D') 

回答

2

與LEFT JOIN表聯合起來,然後只選擇那些沒有表B中

SELECT a.code 
FROM A 
LEFT JOIN B 
    ON a.ID = b.ID 
    AND a.code = b.code 
    AND b.status <> 'D' 
WHERE a.status <> 'D' 
AND b.code IS NULL 
0

我想你應該能夠只是刪除ID的,你上查詢,你應該得到的一切。

SELECT 
    a.code 
FROM 
    A 
WHERE 
    a.code NOT IN(
     SELECT 
     b.code 
     FROM 
     B b 
     AND b.status <> 'D') 
and AND a.status <> 'D' 
+0

重複'和'最後一行相應的記錄的記錄,也應可能被寫入有點,因爲這不會表現得太好 – Manatherin

+0

你在子查詢中也有'and'而不是'where' – Manatherin