繁体   English   中英

PHP和MySQL检查mysql是否以指定条件加入

[英]PHP & MySQL check mysql left join with specified condition

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

  • 用户:user_id,user_group_id
  • 线程:thread_id,user_id,粘性

我需要查询以将user_group_id从15更改为14(如果他们没有任何线程)(线程中的sticky = 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;

你的意思是:

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是否必须?

这会做到的

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

http://sqlfiddle.com/#!2/58b121/1上查看sqlfiddle演示。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM