结合SELECT和两个更新?

时间:2013-04-26 21:54:30

标签: php mysql join pdo

$query = "SELECT loved FROM users WHERE uid=:quitter";
$query = "UPDATE users SET status='0', loved=NULL, beloved_count='0' WHERE uid=:deceased";
$query = "UPDATE users SET beloved_count=beloved_count-1 WHERE uid=:lover";

因为我的代码可能不太清楚,所以发生了什么:
用户123退出。 我需要 1)找出123“被爱”的人 2)更新123的行(设置状态='0'等)
3)更新“被爱”用户的行并将“beloved_count”减少1

这一切都在一张桌子内进行。一次查询会发生这种情况吗?理想情况下,我想用一个查询来完成它,但即使两个查询也比我用3个单独的查询更好。

我看过JOIN,但我不清楚,因为我以前从未使用过它们。我已经看过查询组合的例子,但没有任何反映这一点。我正在使用PHP 5.4和PDO。


类似的东西:

$query = "UPDATE users SET status='0', loved=NULL, beloved_count='0' WHERE uid=:deceased;  
    UPDATE users SET beloved_count=beloved_count-1 WHERE uid=:lover;";

1 个答案:

答案 0 :(得分:0)

也许是这样的?基本上,你正在加入退出用户的所有用户。

UPDATE 
    users AS u1, 
    users AS u2 
SET 
    u1.status='0',
    u1.loved=NULL,
    u1.beloved_count='0',
    u2.beloved_count=u2.beloved_count-1
WHERE 
    u1.uid=:quitter
    AND u1.loved=u2.uid;