2013-02-03 49 views
-2

是否有人可以幫助我在一個SQL查詢,其中有這樣一個表作爲的SQLite刪除一組,其中{A,B}和{B,A}

Col A | Col B 
------------- 
A  B 
C  D 
E  F 
B  A 

我怎麼刪除{B,A}或者選擇{B,A}

的問題是:

If two students A and B are friends, and A likes B but not vice-versa, 
remove the Likes tuple. 

我想通了其中A和B是朋友和A喜歡B中的表,但我不知道如何刪除在B喜歡元組

select friend.id1, friend.id2 
from friend, likes 
where friend.id1 = likes.id1 and friend.id2 = likes.id2 
+0

你給出的表格結構類似於表格或freinds表格,如果它像表格那麼按照你的問題'A喜歡B而不是反之,'A喜歡B但不喜歡A'然後' {B,A}'不應該被移除,但是{C,D},{E,F}'... – sourcecode

回答

1

我見過這個家庭作業......

DELETE FROM Likes 
WHERE ID1 IN (SELECT L.ID1 
         FROM Friend F,Likes L 
         WHERE F.ID1 = L.ID1 AND F.ID2 = L.ID2 
         AND F.ID1 NOT IN (SELECT ID2 
             FROM Likes 
             WHERE ID1=L.ID2 AND ID2=L.ID1)) 

揣摩這些在你自己 - 或者,如果你不能,嘗試搜索谷歌。

+0

謝謝。這花了一段時間,但我得到了邏輯。給其他人的提示,突出顯示該行,並列B.在行A列;匹配col B是相同的。這就是「不在」條款的作用。 – Sugihara

+0

嗨。我想出了一個類似的查詢,但在我看來,它刪除了太多的元組,因爲我們僅限制id1。我努力根據兩列值刪除,但目前爲止沒有成功。你怎麼看? – damluar

+0

我想寫這樣的查詢:https://bitbucket.org/sanjayts/dbclass/src/680caa177fd09dfa118c11bf96b990c76a8d69ca/sql/exercise-quiz/social-network-modification-solution.txt – damluar

0
DELETE FROM friends f1 
WHERE NOT EXISTS (
    SELECT * 
    FROM friends f2 
    WHERE f2.a = f1.b AND f2.b = f1.a 
    ); 

注意:這可能會在MySQL的工作,因爲它不允許在子查詢中被引用的目標表。

相關問題