我有一個三列,obj1,obj2(兩個varchars)和對象之間的距離的表。不幸的是,構建數據的方式,我有兩個條目的數量,例如,從Mysql數據庫刪除重複的條目
obj1 obj2 distance
c1 c2 10.5
c2 c1 10.5
想我要的是能夠刪除列出的條目之一。我想過並嘗試使用Exists子句,但沒有運氣。我想知道這是否需要存儲過程?
任何幫助將感激地收到! 吉姆
我有一個三列,obj1,obj2(兩個varchars)和對象之間的距離的表。不幸的是,構建數據的方式,我有兩個條目的數量,例如,從Mysql數據庫刪除重複的條目
obj1 obj2 distance
c1 c2 10.5
c2 c1 10.5
想我要的是能夠刪除列出的條目之一。我想過並嘗試使用Exists子句,但沒有運氣。我想知道這是否需要存儲過程?
任何幫助將感激地收到! 吉姆
如果你能保證每行都有一個「重複」與OBJ1和扭轉obj2的值,那麼你可以通過做
DELETE FROM dist WHERE obj1 > obj2
其中dist
是的名稱中刪除一個這樣的行對每個複製你的桌子。
如果你的表中有行,其中obj1
等於obj2
,那麼你可以做的(OBJ1,OBJ2)唯一索引:
ALTER IGNORE TABLE dist ADD UNIQUE INDEX dist_index (obj1,obj2)
上面的命令將每當唯一索引約束是下降,從表中的行不滿意。 (obj1等於obj2的第一行,因爲唯一索引約束仍然被滿足,所以行將被保留,obj1等於obj2的第二行將被丟棄,因爲第二行與唯一性約束相矛盾。)
您可以選擇保留唯一索引,或者,如果你想刪除它,該命令將是:
ALTER TABLE dist DROP INDEX dist_index
mysql> create table doubles(a int,b int,c int);
Query OK, 0 rows affected (0.11 sec)
mysql> insert into doubles values (1,2,10),(2,1,10),(1,3,12),(3,1,12),(2,3,13);
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from doubles;
+------+------+------+
| a | b | c |
+------+------+------+
| 1 | 2 | 10 |
| 2 | 1 | 10 |
| 1 | 3 | 12 |
| 3 | 1 | 12 |
| 2 | 3 | 13 |
+------+------+------+
5 rows in set (0.00 sec)
mysql> DELETE a FROM doubles a JOIN doubles b ON a.a = b.b AND a.b = b.a AND a.a > b.a;
Query OK, 2 rows affected (0.03 sec)
mysql> select * from doubles;
+------+------+------+
| a | b | c |
+------+------+------+
| 1 | 2 | 10 |
| 1 | 3 | 12 |
| 2 | 3 | 13 |
+------+------+------+
3 rows in set (0.00 sec)
最後條款(a.a > b.a
)同樣可以a.a < b.a
,我們只需要決定哪一個雙打應該去。
有問題做這個工作,我試圖玩這個,最終得到 – James 2010-11-06 14:42:56
對不起意外按下return.ysql>刪除從spectra spectramatches_2作爲sa加入spectramatches_2作爲sb開sa.spectra1 = sb.spectra2 AND sa.spectra2 = sb .spectra1 AND sa.spectra1> sb.spectra1; 錯誤1064(42000):您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第1行的'as sa JOIN spectramatches_2 s'ON sa.spectra1 = sb.spectra2 AND sa.spectra2'附近使用正確的語法 – James 2010-11-06 14:43:35
表定義爲mysql> describe spectramatches_2 - >; + --------------- + ------------- + ------ + ----- + ----- ---- + ------- + |字段|類型|空| Key |默認|額外| + --------------- + ------------- + ------ + ----- + ----- ---- + ------- + | core1 | varchar(10)|是| | NULL | | | distance_c1s1 |雙|是| | NULL | | | spectra1 | varchar(10)|是| | NULL | | | distance_s1s2 |雙|是| | NULL | | | spectra2 | varchar(10)|是| | NULL | | | distance_c2s2 | double – James 2010-11-06 14:44:48
非常感謝! – James 2010-11-06 14:48:22