我正在使用xenforo,它有表格:
如果他们没有任何粘贴线程(在线程中粘性= 0),我需要一个查询来将user_group_id从15更改为14。
这是否可以使用左连接,如果是这样的话?
感谢。
答案 0 :(得分:0)
update user u
set u.user_group_id=14
where u.user_group_id=15 and
(select sticky from thread where thread_id = u.user_id)=0;
答案 1 :(得分:0)
你的意思是:
UPDATE user SET user_group_id=14 WHERE user_group_id=15 AND
0 = (SELECT COUNT(*) FROM thread WHERE sticky=0 AND user_id=user.user_id)
这不使用LEFT JOIN。是否必须使用LEFT JOIN?
答案 2 :(得分:0)
这样做
update user set user_group_id = 14
where user_group_id = 15
and user_id in (select user_id from threads where sticky=0)
修改强>
在这种情况下,您可以在更新时加入两个表,而不是使用子查询,如下所示
update user u
inner join thread t on
u.user_id = t.user_id and t.sticky = 0
set u.user_group_id = 14
where u.user_group_id = 15
在此处查看演示sqlfiddle http://sqlfiddle.com/#!2/58b121/1。