2015-06-25 2 views
0

SELECT IFNULL(SUM(IF(A=1 and B=2, 'Correct', NULL)),0) FROM tableMultiple условие в одной функции SumIf

Пожалуйста, я использую такую ​​функцию выше в моем запросе. Хотя это работает, но я хочу знать, является ли это правильным способом обработки нескольких условий в одном запросе в mysql. Спасибо

ответ

1

Нет. Это неправильное изображение. Вы не можете суммировать строковое значение. MySQL преобразует его в число. Поскольку 'Correct' он начинается с буквы, запрос всегда будет возвращать 0.

Я думаю, что вы собираетесь:

SELECT SUM(IF(A=1 and B=2, 1, 0)) as Correct 
FROM table 

Обратите внимание, что это избавляется от внешнего ifnull(). Я бы также предложил использовать COALESCE(), а не IF(), потому что это стандартная функциональность ANSI. Однако это условие не требуется.

Запрос может быть дополнительно упрощен. В самом деле, лучший способ, чтобы написать этот запрос является:

SELECT COUNT(*) 
FROM table 
WHERE A = 1 and B = 2; 

В общем, лучше писать запросы с условиями в пункте WHERE, а не в условных операторах (если это возможно). Это уменьшает количество строк, которые обрабатывает остальная часть запроса.

+0

Спасибо за понимание. – NewBIe

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