2011-12-21 103 views
3

我不是指兩個恰好是相同的行。避免在mysql表中間接重複

我的表的簡單結構是這樣的:

ID VAL1 VAL2

val1和val2的用於將兩個對象鏈接在一起,我不知道哪個是哪個,因爲它們引用同一個表。

我需要避免以下幾點:

 
id val1 val2 
1 40  60 
2 60  40 

我可以使用INSERT忽略以避免直接複製,但它並不與上面的一個工作。

我也試圖避免來自PHP的多個查詢,所以我問是否可以在PHP發送的一個SQL查詢中執行此操作。

+0

數據來自哪裏? – Nonym 2011-12-21 16:48:51

+0

這些值是添加到玩家之間的用戶ID。 – inestical 2011-12-22 09:47:45

回答

5

插入時,只要檢查val1 <= val2,如果是的話就插入它們,如果沒有切換它們。有了這個條件,您將始終確保重複值導致相同的插入。

2

我想通過應用程序代碼或數據庫觸發器強制執行此問題,以便在插入數據時保證val1 < val2。然後在(val1,val2)上創建一個唯一索引。