嘿!,我有以下查询:
SELECT t1.pm_id
FROM fb_user_pms AS t1,
fb_user_pm_replies AS t2
WHERE (t1.pm_id = '{$pm_id}'
AND t1.profile_author = '{$username}'
OR t1.pm_author = '{$username}'
AND t1.pm_id = t2.pm_id
AND t2.pm_author = '{$username}'
AND COUNT(t2.reply_id) > 0)
AND t1.deleted = 0
但是,我遇到了分组错误 - 我猜测是由 AND COUNT(t2.reply_id) > 0 引起的?
如何纠正上述查询以使其正常工作。
希望有人能帮忙。
干杯!
最佳答案
聚合函数 COUNT
不能出现在 WHERE 子句中。您应该使用 GROUP BY 并将其放在 HAVING 子句中。
SELECT t1.pm_id
FROM fb_user_pms AS t1
JOIN fb_user_pm_replies AS t2 ON t1.pm_id = t2.pm_id
WHERE (
(t1.pm_id = '{$pm_id}' AND t1.profile_author = '{$username}') OR
(t1.pm_author = '{$username}' AND t2.pm_author = '{$username}')
) AND t1.deleted = 0
GROUP BY t1.pm_id
HAVING COUNT(t2.reply_id) > 0
如果 t2.reply_id
是 NOT NULL 列,那么您根本不需要 HAVING 子句。
关于mysql - 让这个查询工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3746909/