【问题标题】:Select count from multiple tables and group by从多个表中选择计数并分组
【发布时间】:2015-05-24 23:07:46
【问题描述】:

帮帮我!

$sql = SELECT `id`, `email`, `avatar`,`fullname`,
            SUM(result) as sum_result,
            SUM(total) as sum_total,
            COUNT(rank)  as `top_1` where `itq_exam_thread_test`.`rank` = 1, 
            COUNT(rank)  as `top_2` where `itq_exam_thread_test`.`rank` = 2,
            COUNT(rank)  as `top_3` where `itq_exam_thread_test`.`rank` = 3
GROUP BY userid_created
ORDER BY sum_result DESC, sum_rate DESC
LIMIT 0, 100';

您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在 'where itq_exam_thread_test.rank = 1,

附近使用的正确语法

【问题讨论】:

  • 首先添加一个FROM 子句。然后你就可以着手修复其余的语法了。
  • $sql = SELECT id, email, avatar,fullname, SUM(result) as sum_result, SUM(total) as sum_total, COUNT(rank) as top_1其中itq_exam_thread_test.rank = 1, COUNT(rank) as top_2 where itq_exam_thread_test.rank = 2, COUNT(rank) as top_3 where itq_exam_thread_test.rank = 3 FROM @ 987654338@ GROUP BY userid_created ORDER BY sum_result DESC, sum_rate DESC LIMIT 0, 100';但不运行

标签: mysql count


【解决方案1】:

WHERE 是整个查询的子句,而不是SELECT 子句中的修饰符。你想要的是条件聚合。在 MySQL 中,进行计数非常容易,因为它将布尔表达式视为数字上下文中的整数。所以,你可以使用SUM():

SELECT id, email, avatar, fullname, SUM(result) as sum_result,
       SUM(total) as sum_total,
       SUM(rank = 1) as top_1,
       SUM(rank = 2) as top_2,
       SUM(rank = 3) as top_3
FROM itq_exam_thread_test
GROUP BY userid_created
ORDER BY sum_result DESC
LIMIT 0, 100;

我从ORDER BY 中删除了sum_rate,因为它没有定义。

【讨论】:

猜你喜欢
  • 2013-01-12
  • 1970-01-01
  • 2010-11-19
  • 1970-01-01
  • 2016-12-22
  • 1970-01-01
  • 2020-04-07
  • 2015-07-17
  • 1970-01-01
相关资源
最近更新 更多