我看了很多类似于我的问题,但我没有得到我想要的东西,也许你们可以帮助我
我有这张桌子:
我想做的是:
我不想宣布专栏" tutorial_id"作为UNIQUE,因为不仅仅是一个用户可以拥有相同的" tutorial_id" (如上图所示)。
此外,ON DUPLICATE KEY UPDATE并不适合我。
我想过两次使用QUERY,一次选择并检查记录是否存在,另一次是UPDATE还是INSERT,但这是正确的吗?
答案 0 :(得分:0)
使用INSERT ... ON DUPLICATE KEY UPDATE ... syntax。为了它的工作。
如果您的user_id
和course_id
组合是唯一的,则可以从表中删除id
字段,并将这两个字段作为主键。
在任何其他情况下,还需要id
字段,并为每个记录创建三个唯一的组合,然后将这三个字段作为您表的主键(id
,{{1 }和user_id
)。
答案 1 :(得分:0)
如果首先发布UPDATE
,如果没有记录受影响(使用row_count()
然后INSERT
?这样您只测试一次存在条件。
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;