如果表有一个包含2个相似列的行,请更新,而是插入

时间:2015-09-27 23:50:56

标签: mysql

我很难理解INSERT ... ON DUPLICATE KEY UPDATE的用法,假设我有一个tracks表,其中包含以下列:

id    tracklist_id    number    name

1          1            1       Track1
2          1            2       Track2
3          1            3       Track3
4          2            1       Track1
5          2            2       Track2
6          2            3       Track3

如果已经为轨道列表1定义了轨道n°1(如示例中所示),那么只需UPDATE name,如果不是INSERT它。我尝试过类似的东西:

INSERT INTO tracks (number, name, tracklist_id) VALUES ('1', 'Track1', '1'), ('2', 'Track2', '1'), ('3', 'Track3', '1') ON DUPLICATE KEY UPDATE name=VALUES(name);

我认为我的问题与PRIMARY KEY有关,我试图将tracklist_id定义为主键但没有成功,因为它在表格中多次出现(这是我的第一部分)我不确定我完全理解。

1 个答案:

答案 0 :(得分:2)

只需更改为UNIQUE复合材料

ALTER TABLE `tracks` ADD UNIQUE `trkid_number` (`tracklist_id`,`number`);