Как найти строки с разными статусами?

Помогите сформировать запрос. Есть таблица со следующей структурой:

hash|name|status

Нужной найти строки, у которых для одного и того же hash имеются статусы 0 и 1, а строки в которых у одного и того же hash имеется только один статус (0 или 1) не находить. Т.е. если у нас есть такие строки в таблице:

b6ea6556f7bb0eda180296901b012d2c|Vasya|1
b6ea6556f7bb0eda180296901b012d2c|Vasya|1
b6ea6556f7bb0eda180296901b012d2c|Vaska|0
938ac761f282f2b733b4b8e91eae2a47|Petya|0
938ac761f282f2b733b4b8e91eae2a47|Petya|0

На выходе мы должны получить только одну строку b6ea6556f7bb0eda180296901b012d2c|Vasya

Как правильно составить запрос?


Ответы (1 шт):

Автор решения: Akina
SELECT hash, name
FROM src_table
GROUP BY hash, name
HAVING COUNT(DISTINCT status) = 2
/*           или, например           */
/* HAVING MIN(status) != MAX(status) */
→ Ссылка