Q
如何使用SQL
4
A
回答
4
可以使用GREATEST和LEAST到「訂單」的欄目,然後用不同的:
SELECT DISTINCT GREATEST(col1, col2) as first, LEAST(col1, col2) as second from yourTable
這會給你一個不同的結果。如果你在尋找什麼是刪除,你不能在這個結果中刪除的所有內容:
DELETE FROM yourTable where (col1, col2) NOT IN (
SELECT DISTINCT GREATEST(col1, col2) as first, LEAST(col1, col2) as second from yourTable
)
+0
如果我在同一個表中有非重複的元組,它會起作用嗎? –
0
MySQL的句法:
DELETE b
FROM mytable a, mytable b
WHERE a.col1 = b.col2 AND a.col2 = b.col1 AND a.col1 > b.col2;
如果這兩個值相同,它不工作,但你有一個獨特的約束,以防止重複在這種情況下,對嗎?
1
我假設你想要有一個對稱關係:例如,如果A是B的朋友,那麼B也是A的朋友?我還假設這兩列都是外部ID和數字。如果不是這樣,你將不得不適應。
最好的方法是永遠不要插入兩個版本;規範化關係,使較小的總是在Col1中,而較大的總是在Col2中。即對於13 -> 27
,您應該插入[13, 27]
;對於27 -> 13
,如果它不再出現,則會再次插入[13, 27]
。
如果你已經有了一個搞砸了表,我可能只是做:
UPDATE IGNORE t
SET col1=(@temp:=col1), col1 = col2, col2 = @temp
WHERE col1 > col2;
正常化它(沒有嘗試,可能有誤差;此外,MySQL的語法,你可能有適應其他發動機);那麼這將刪除額外的情況下,兩個方向的情況下存在:
DELETE FROM t
WHERE col1 > col2;
相關問題
- 1. 如何使用SQL
- 2. 如何使用sql
- 3. 如何使用SQL
- 4. 如何使用SQL
- 5. 如何使用SQL
- 6. 如何使用SQL
- 7. 如何使用SQL
- 8. 如何使用SQL
- 9. 如何使用SQL
- 10. 如何使用SQL
- 11. 如何使用SQL
- 12. 如何使用SQL
- 13. 如何使用SQL
- 14. 如何使用SQL
- 15. 如何使用SQL
- 16. 如何使用SQL
- 17. 如何使用SQL
- 18. 如何使用SQL
- 19. 如何使用SQL
- 20. 如何使用SQL
- 21. 如何使用SQL
- 22. 如何使用SQL
- 23. 如何使用SQL
- 24. SAS sql。如何使用行列sas sql?
- 25. 如何使用SQL(SQL Server)的
- 26. 如何使用T-SQL
- 27. 如何使用SQL更新
- 28. SQL如何使用minus或!=
- 29. SQL:如何使用式
- 30. 如何通過使用SQL
所以你的條件重複是兩列是可以互換的? – Coderchu
是的。如果它們在任一欄中,它們具有相同的含義。 –
你必須考慮這兩列重複 –