MySQL 不带 WHERE 的多条件查询

标签 mysql sql case

我想查询具有不同数据类型的多个变量的数据库。

我的查询如下所示:

SELECT var1, var2,  
       SUM( CASE WHEN var3 ='2008' AND var4='A1_U18' THEN var5 ELSE 0 END ) AS 'A1_U18_7',
       SUM( CASE WHEN var3='2015' AND var4='A1_U18' THEN var5 ELSE 0 END ) AS 'A34_U15_0',
       CASE WHEN var3 = '2015' AND var4 = 'A0_RISE' THEN var5 ELSE 0 END AS 'A0_RISE'
FROM dataset1
GROUP BY var1

实际上我不需要总结前两个查询的结果,但否则我会得到“0”作为输出。通过总和我得到了正确的答案。

但是,这种解决方法在“A0_RISE”的情况下不可行,因为数据类型是文本。如果没有 SUM 函数,我也会得到输出“0”。

如何获得所有变量的正确输出?如果您对 double 的 SUM 解决方法有更好的想法,我将非常感激!

最佳答案

也许使用 Max ?

SELECT var1, var2,  
       SUM( CASE WHEN var3 ='2008' AND var4='A1_U18' THEN var5 ELSE 0 END ) AS 'A1_U18_7',
       SUM( CASE WHEN var3='2015' AND var4='A1_U18' THEN var5 ELSE 0 END ) AS 'A34_U15_0',
       MAX(CASE WHEN var3 = '2015' AND var4 = 'A0_RISE' THEN var5 ELSE '' END ) AS 'A0_RISE'
FROM dataset1
GROUP BY var1

关于MySQL 不带 WHERE 的多条件查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42247567/

相关文章:

MySQL 选择表是否存在

mysql - .Net Connector for MySQL - 参数

php将最后插入的值插入数据库

URL 中的 PHP/MySQL 变量 - 文本被剥离,数字部分仅用于选择数据库记录

c# - 对象引用未设置为对象错误的实例

sql - 如何在 IF 语句中检查 Sql Server 存储过程中的参数是否为空或空?

c - 如何使用带命令行参数的嵌套 Switch?

mysql CASE WHEN 要么但不是两者

sql - 带有 SQL 注入(inject)保护的简单查询比没有的要花费更长的时间

sql - VBA:将片段从 VBA 转换为 SQL