2012-06-22 39 views
0

我有兩個表。我想比較兩個表並刪除重複的值。但首先,我需要查看「A-Confirm-tbl」,如果該ID是確認,那麼只能從上面的表中刪除它。我寫了一個簡單的SQL代碼但它沒有工作。SQL:消除兩個表中的重複行

SELECT A.id 
FROM A 
FULL JOIN B 
ON A.id = B.id 
AND A-Confirm-tbl.id='1' 
GROUP BY A.id 

A B 
1 2 
5 1 
2 5 
3 4 
10 8 
20 15 

A-Confirm-tbl 
id confirm 
1 1 
5 0 
2 1 
3 0 
10 0 
20 0 
+0

沒有你看了這個指南? http://support.microsoft.com/kb/139444 –

+0

是啊...但我需要的價值。不要刪除。和BTW我已經搜查。我需要非常緊急的代碼 – Mifas

+0

'A-Confirm-tbl'不完全是一個有效的表名... –

回答

0

放開手腳,但本質上我只想加盟確認表,僅保留有1的確認值,然後做一個子查詢來獲得所有的B ID和只能從有選擇行的行來自該子選擇的ID。

SELECT A.id 
FROM A 
JOIN A-Confim-tbl aconf 
    ON A.id = aconf.id AND aconf.confirm = 1 
WHERE a.id IN (SELECT B.id FROM B) 
+0

,我認爲這可能應該是'AND aconf.confirm = 1' – soupy1976

0

我會做如下: 使用內連接來找到TBLA和TBLB比賽記錄ID。然後使用A-Confirm-tbl加入記錄,並且只用confirm = 1過濾記錄。

SELECT * from tblA a 
INNER JOIN tblB b ON a.id=b.id 
JOIN A-Confim-tbl c on a.id=c.id 
WHERE c.confirm='1' 
0
DELETE first_table_name 
FROM first_table_name 
INNER JOIN second_table_name 
     ON second_table_name.ID = first_table_name.ID 
join A-Confim-tbl on first_table_name.ID=A-Confim-tbl.Id 
where A-Confim-tbl.confirm='1'