是否可以合并这些查询?
$sql1 = "UPDATE users AS u, invites AS i
SET u.uinvite = u.uinvite - 1, u.ufriends = CONCAT(u.ufriends, ',$iid'), i.seen = 1
WHERE u.uid = '$uid' AND i.invited_uid = '$uid' AND i.invitor_uid = '$iid'";
$sql2 = "UPDATE users
SET ufriends = CONCAT(ufriends, ',$uid')
WHERE uid = '$iid'";
变量解释:
$uid = the users ID $iid = the friends ID
这是我尝试合并:
$mergesql = "UPDATE invites AS i, users AS u
SET
CASE
WHEN u.uid = '$uid' THEN u.uinvite=u.uinvite-1, u.ufriends = CONCAT(u.ufriends,',$iid')
ELSE u.ufriends = CONCAT(u.ufriends,',$uid')
END
, i.seen = '1'
WHERE i.invited_uid = '$uid' AND i.invitor_uid = '$iid'
AND (u.uid = '$uid' OR u.uid = '$iid')"
当你必须做更复杂的查询时,我发现很难理解 mysql 是如何工作的。 我的英语也缺乏专业知识,如果你知道一个好的教程,你会让我非常高兴! (不是来自MySQL网站的,它正在杀死=S)
最佳答案
了解 MySQL,可能有一种方法可以在一个查询中执行此操作,但我认为您根本不会获得任何好处,因为您是基于完全独立的键进行更新。这样做实际上可能很危险,因为结果是不可预测的。通过两个查询来完成,很容易弄清楚发生了什么。
如果还不算太晚,我建议您删除 friends
字段,转而使用用户和好友之间的映射表。
关于mysql - 是否可以合并这些查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5283288/