如果特定列中存在特定值,则更新记录,否则插入新值

时间:2017-03-26 18:55:55

标签: php mysql sql

我看了很多类似于我的问题,但我没有得到我想要的东西,也许你们可以帮助我

我有这张桌子:

enter image description here

我想做的是:

  • 插入新记录(无论" user_id"或" course_id"是否已存在)。
  • 但是!如果有相同的记录" user_id"和" course_id"和" tutorial_id",然后只需更新" tutorial_id"和" tutorial2_id"并保持原样。

我不想宣布专栏" tutorial_id"作为UNIQUE,因为不仅仅是一个用户可以拥有相同的" tutorial_id" (如上图所示)。

此外,ON DUPLICATE KEY UPDATE并不适合我。

我想过两次使用QUERY,一次选择并检查记录是否存在,另一次是UPDATE还是INSERT,但这是正确的吗?

2 个答案:

答案 0 :(得分:0)

使用INSERT ... ON DUPLICATE KEY UPDATE ... syntax。为了它的工作。

如果您的user_idcourse_id组合是唯一的,则可以从表中删除id字段,并将这两个字段作为主键。

在任何其他情况下,还需要id字段,并为每个记录创建三个唯一的组合,然后将这三个字段作为您表的主键(id,{{1 }和user_id)。

答案 1 :(得分:0)

如果首先发布UPDATE,如果没有记录受影响(使用row_count()然后INSERT?这样您只测试一次存在条件。

rextester demo

update test set tutorial2_id = @tutorial2
where user_id = @user_id and course_id = @course_id and tutorial_id = @tutorial_id;

insert into test (user_id, course_id, tutorial_id, tutorial2_id)
select @user_id, @course_id, @tutorial_id, @tutorial2_id)
where row_count() = 0;
相关问题