Mysql
來自兩列的重複數據
我有一個只有兩列的表,第一列是 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;
試一試 !!!