На данный вопрос уже ответили:
Есть таблица
Нужно найти все id, которые содержат значения в поле digits '15' и '16' одновременно. Т.е. в данном случае - только id = 1.
Пробую
SELECT id from table group by digits having count(digits=15)>=1 and count(digits=16)>=1;
результат выводит неверный.
count(digits=15) даст значение при любом значении digits, кроме NULL - и неважно, какое это будет значение, 1 или 0, но это значение. Так что это эквивалентно простому count(digits).
А вот count(CASE WHEN digits=15 then 1 END) только для 15 даст значение (причём неважно, что написать вместо единицы, лишь бы не NULL). Если значение digits не 15 (в т.ч. NULL) - CASE даст NULL, который не будет посчитан. И запрос даст верные данные.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости