簡體   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