2015-03-27 2 views
0

Новое для SQL. Можно ли установить суммарное значение, равное 1, если оно является числом больше 0. Я не хочу менять номер в базе данных, просто хочу запустить выбор, чтобы получить, равна или нет сумма группы значения больше, чем 0 или 0.установить все выбранные значения больше 0, равные 1: mySQL

данные выглядит следующим образом

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 

Спасибо!

+0

Как вы получать 'id' столбца в результате, когда у вас нет 'id' в предложении SELECT? – Barmar

+0

И почему в вашем результате идентификаторы не совпадают с идентификаторами в исходной таблице? Нет строки с 'col1 = 3' и' id = 3'. – Barmar

+0

Извините. Это была примерная таблица. Я изменил его –

ответ

1

Вы можете использовать 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 
+0

спасибо за предоставленные два примера, они оба работают. Первому нужно еще одно »(« после «IF» –

+0

на самом деле ему понадобилось меньше »)'. Исправлена. – Barmar

-1

Вы должны быть в состоянии использовать тест в запросе, как новый столбец. что-то вроде этого:

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

Хотя я не уверен, что точный синтаксис, вы можете посмотреть в этом направлении

+0

Ваш синтаксис совершенно неверен. Вы ближе к синтаксису CASE, но у вас тоже нет такого права. – Barmar

Смежные вопросы