gpt4 book ai didi

mysql - 左连接和,组麻烦

转载 作者:行者123 更新时间:2023-11-29 21:30:04 25 4
gpt4 key购买 nike

我有这个查询

SELECT
`from_id` as user_id,
MAX(`createdon`) as updated_at,
SUM(`unread`) as new,
u.username,
p.sessionid,
s.access
FROM (
SELECT `from_id`, `createdon`, `unread`
FROM `modx_messenger_messages`
WHERE `to_id` = {$id}
UNION
SELECT `to_id`, `createdon`, 0
FROM `modx_messenger_messages`
WHERE `from_id` = {$id}
ORDER BY `createdon` DESC
) as m
LEFT JOIN `modx_users` as u ON (u.id = m.from_id)
LEFT JOIN `modx_user_attributes` as p ON (p.internalKey = m.from_id)
LEFT JOIN `modx_session` as s ON (s.id = p.internalKey)
GROUP BY `from_id`
ORDER BY `new` DESC, `createdon` DESC;

表格

id | message | createdon | from_id | to_id | unread   
1 | test | NULL | 5 | 6 | 0
2 | test2 | NULL | 6 | 5 | 1
3 | test3 | NULL | 6 | 5 | 1

结果 = 28.为什么?如果删除连接 new = 2,正确。

最佳答案

虽然这取决于实际的数据库,但纯 SQL 表示使用 GROUP BY 的语句要求所有非聚合列都在 GROUP BY 中。如果不包含所有列,可能会发生奇怪的事情,这可能可以解释为什么您会得到不同的结果。如果您知道 user_id 中的其他列将相同,您可以执行 MAX(u.username) 或类似的操作(同样,取决于您的数据库服务器)。所以我会先尝试清理 SQL 语句。

关于mysql - 左连接和,组麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35329115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com