PHP& MySQL检查mysql左连接是否具有指定条件

时间:2014-02-10 03:11:22

标签: php mysql sticky xenforo

我正在使用xenforo,它有表格:

  • user:user_id,user_group_id
  • thread:thread_id,user_id,sticky

如果他们没有任何粘贴线程(在线程中粘性= 0),我需要一个查询来将user_group_id从15更改为14。

这是否可以使用左连接,如果是这样的话?

感谢。

3 个答案:

答案 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