带求和查询的 MYSQL case 语句

标签 mysql sql

不确定这是否可能 - 但我正在尝试执行以下操作 有一个包含以下列的表格

 vote_id (primary_key)
 question_id
 user_id
 vote_count

这基本上存储了用户对特定问题投票的所有投票

现在,在一个查询中,我是否可以获取总票数并检查特定用户是否已投票。

类似的事情 - 假设 user_id 10

SELECT sum(vote),
    (
        CASE 
            WHEN (user_id = 10)
                THEN user_id
            ELSE NULL
            END
        ) user_id
FROM vote_question
GROUP BY course_question_id

这显然行不通。

我期望的是,如果特定用户投票了 - 他的 user_id 应该与投票计数一起返回 - 如果他没有投票 - 返回 null

谢谢

最佳答案

这将是:

SELECT 
  SUM(vote),
  COUNT(IF(user_id = 10, 1, NULL)) AS has_user_id_10,
FROM 
  vote_question
GROUP BY 
  course_question_id

- 如果 id 为 10 的用户投票,则 has_user_id_10 会大于零,否则为零。可能您想要严格的 10,然后只需将其替换为

COUNT(IF(user_id = 10, 1, NULL))>0 AS has_user_id_10

关于带求和查询的 MYSQL case 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19631389/

相关文章:

php - 无论年份如何过生日

mysql - 如何使用 MySQL 连接两个具有相同复合键的表,如果不在 T1 中,则使用 T2 中的值

sql - 简单的数据库表设计/布局

sql - 如何在SQL中同时使用多个count和多个group by?

mysql - SQL 查询从选择查询的输出插入到特定列

mysql - 不要等待node js中的mysql数据库结果

mysql - 运行 Rails 测试套件时 MySql 出现 "Illegal mix of collations"错误

sql - 在 SQL 中获取每行 d 天内过去 x 事件的平均值的有效方法(大数据)

mysql - 长级联 MySQL 查询

php - 重复 key : Ambiguous