mysql - 让这个查询工作?

标签 mysql count

嘿!,我有以下查询:

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/

相关文章:

php - 从复选框数组插入数据库

r - 如何按顺序计算因子

mysql - 加快临时表查询速度

c# - .net 4 中今天到昨天的 asp.net 访问者计数(在线用户)

sql - 我可以使用什么 SQL 从我的付款数据中检索计数?

带有两个查询的 PHP MySQL

mysql - 如果列日期与当前日期超过 24 小时,则 SQL 查询列出所有行

mysql - 在 mysql 中使用 select from where 命令时遇到问题

mysql - 如何格式化 'time' 字段 - Angularjs 和 mySql

mysql - SQL从多个表中选择计数