Mysql

來自兩列的重複數據

  • April 14, 2014

我有一個只有兩列的表,第一列是 pid(照片 ID),另一列是 tid(標籤 ID)

+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| pid   | int(10) | NO   |     | NULL    |       |
| tid   | int(10) | NO   |     | NULL    |       |
+-------+---------+------+-----+---------+-------+

該表將儲存帶有標籤 ID 的照片 ID,但我遇到了一個問題,我想這也違反了規範化,這是我的表數據。

+-----+-----+
| pid | tid |
+-----+-----+
|  10 |   1 |
|  10 |   2 |
|  10 |   3 |
|  10 |   4 |
|   0 |   6 |
|   0 |  10 |
|   0 |  10 |
|  10 |   1 |
|  10 |   2 |
|  10 |   3 |
|  10 |   4 |
+-----+-----+

它儲存了許多重複值,如何擺脫這個?
我的意思是,我怎樣才能只儲存一次這種類型的行:| 10 | 1 |

我已經嘗試過,UNIQE但這只會儲存一次照片 ID 或標籤 ID?
我正在使用 PHP

謝謝

您需要一個複合唯一索引。

假設您的表名為photos. 你可以這樣做:

CREATE TABLE photos_new LIKE photos;
ALTER TABLE photos_new ADD UNIQUE INDEX pid_tid_index (pid,tid);
INSERT IGNORE INTO photos_new SELECT * FROM photos;
ALTER TABLE photos RENAME photos_old;
ALTER TABLE photos_new RENAME photos;

如果它成功了,然後執行

DROP TABLE photos_old;

試一試 !!!

引用自:https://dba.stackexchange.com/questions/63132