0
$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 "loved"
2) 更新 123 的行(设置 status='0' 等)
3) 更新 "loved" 用户的行并将 "beloved_count" 减少 1

这一切都发生在一张桌子上。一个查询会发生这种情况吗?理想情况下,我想用一个查询来做,但即使是两个也比我现在用 3 个单独的查询要好。

我看过JOINs,但我不清楚,因为我以前从未使用过它们。我见过查询组合的例子,但没有任何反映这一点。我正在使用 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;";
4

1 回答 1

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;
于 2013-04-26T22:57:08.957 回答