2012-11-08 57 views
0

後,我有一個表像這樣刪除從選擇的行處理

Year Month 
2012 8 
2012 7 
2012 4 
2012 3 
2011 7 
2011 3 
2011 1 
2010 10 
2010 9 
2010 8 

該表顯示了一個月,一年remaning,現在讓我們說,我已經完成了2012,7個月。現在我想有一個像

Year Month 
    2012 8 
    2012 4 
    2012 3 
    2011 7 
    2011 3 
    2011 1 
    2010 10 
    2010 9 
    2010 8 

名單我使用下面的查詢,但是這不是給我正確的記錄

SELECT YEAR, MONTH from tablex 
WHERE Year NOT IN (SELECT DISTINCT YEAR from OTHER_TABLE INNER JOIN Some_Other_Table) 
AND MONTH NOT IN (SELECT DISTINCT MONTH FROM OTHER_TABLE INNER JOIN Some_Other_Table) 

當OTHER_TABLE爲null,則我收到當期的計數,但是當其他表有2012年和7月我沒有得到任何結果。

PS:有一個可用的TableX和OTHER_TABLE和Som_Other_Table

+0

您是否獲得*沒有結果*或*結果太少*? 'OTHER_TABLE'中有哪些行? –

回答

2

沒有連接列,您只需要使用NOT EXISTS

SELECT YEAR, MONTH 
from tablex t1 
WHERE NOT EXISTS 
(
    SELECT 1 FROM OTHER_TABLE t2 
    WHERE t2.Year = t1.Year AND t2.Month = t2.Month 
) 
2

這個答案假設你有一個單列{Year = 2012, Month = 7}OTHER_TABLE到指定完成的月份。

這是行不通的,因爲你要單獨檢查年份和月份。所以你是不是刪除行(2012,7)從結果來看,你與年= 2012取出所有的行,並與本月全部行= 7。試試這個反連接:

SELECT x.YEAR, x.MONTH 
FROM tablex x 
LEFT OUTER JOIN OTHER_TABLE y ON x.YEAR = y.YEAR AND x.MONTH = y.MONTH 
WHERE y.YEAR IS NULL 
+0

有沒有解決任何其他方式,因爲我已經有struncture這樣 * SELECT FROM MainTable WHERE Col1中(SELECT FROM TABLEA INNER JOIN TABLEB) 和col2上(SELECT FROM TABLEA INNER JOIN TABLEB)* 哪裏MainTable沒有加盟條件與表A和表B – Zerotoinfinity

+0

@Zerotoinfinite我不知道我完全按照。你能發佈所有相關的表結構和一些示例數據,以及這個查詢嗎? –