设置大于0的所有选定值等于1:mySQL

时间:2015-03-27 01:22:26

标签: mysql sql group-by

SQL新手。是否有可能将总和值设置为1,如果它是任何大于0的数字。我不想更改数据库中的数字,只想运行一个select来获取是否为该组的总和值大于0或0。

数据看起来像这样

 col1 | col2
  1      1
  1      1
  1      0
  2      0
  3      1
  3      1
  3      1
  3      1

我目前可以接受这个

select table.col1, sum(table.col2)
from messages
group by table.col1;

 col1 | col2
  1      2
  2      0
  3      4

我希望它看起来像这样

col1 | col2
 1      1
 2      0
 3      1

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用IF

SELECT col1, IF(SUM(col2) > 0, 1, 0) AS col2
FROM messages
GROUP BY col1

您还可以使用SQL标准CASE表达式:

SELECT col1,
       CASE WHEN SUM(col2) > 0
            THEN 1
            ELSE 0
        END AS col2
FROM messages
GROUP BY col1

答案 1 :(得分:-1)

您应该能够在查询中使用测试作为新列。像这样的东西:

Select col1, if col1 > 0 then 1 else 0 from table1

虽然我不确定确切的语法,但您可能希望调查此方向