避免重復(fù)進(jìn)入MySQL數(shù)據(jù)庫(kù)的最佳方法我有一個(gè)3列的表-id(PK),pageId(FK),name。我有一個(gè)php腳本,它將大約5000條記錄轉(zhuǎn)儲(chǔ)到表中,其中大約一半是重復(fù)的,具有相同的pageId和名稱(chēng)。頁(yè)面ID和名稱(chēng)的組合應(yīng)該是唯一的。當(dāng)我在php中循環(huán)腳本時(shí),防止復(fù)制被保存到表中的最佳方法是什么?
3 回答

牧羊人nacy
TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊
ALTER TABLE thetable ADD UNIQUE INDEX(pageid, name);
無(wú)視它? INSERT IGNORE INTO thetable (pageid, name) VALUES (1, "foo"), (1, "foo");
覆蓋以前輸入的記錄? INSERT INTO thetable (pageid, name, somefield)VALUES (1, "foo", "first")ON DUPLICATE KEY UPDATE (somefield = 'first') INSERT INTO thetable (pageid, name, somefield)VALUES (1, "foo", "second")ON DUPLICATE KEY UPDATE (somefield = 'second')
更新一些柜臺(tái)? INSERT INTO thetable (pageid, name)VALUES (1, "foo"), (1, "foo")ON DUPLICATE KEY UPDATE (pagecount = pagecount + 1)

慕田峪9158850
TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
alter table YOURTABLE add unique index(pageId, name);
$already_done = array();foreach ($records as $record){ $unique_hash = md5($record['name'].$record['pageId']); if (!in_array($unique_hash, $already_done)) { $already_done[] = $unique_hash; // sql insert here }}
添加回答
舉報(bào)
0/150
提交
取消