Запрос MySQL для следующих

У меня есть образец таблицы "

A | 2
A | 0
A | 0
B | 1
B | 1
C | 2
C | 1

И я хочу, чтобы результат был:

A | 2
A | 0
A | 0
C | 2
C | 1

т.е. я не хочу, чтобы строка, имеющая такое же значение в столбце два

2 ответа

Предполагая, что в вашей таблице есть столбцы "ch" для символа и "значение" для номера, который вы можете сделать следующим образом:

select t.ch, t.value
from test t
 join (
 select ch, count(distinct value) as 'dst'
 from test
 group by ch
 having count(distinct value)=1
 ) as q on t.ch!=q.ch;

subuquery находит ch, который имеет только одно отличное значение. Они не включены в соединение.


Не самый эффективный запрос, но я думаю, вы хотите что-то вроде этого:

SELECT * FROM test WHERE C1 NOT IN (
 SELECT C1 FROM test
 GROUP BY C1 HAVING COUNT(DISTINCT(C2)) = 1
);

Я предполагаю, что вы не хотите, чтобы записи имели только один столбец один пример; хорошо, если вы это сделаете:

(например, если есть строка "D | 1", и вы этого хотите)

SELECT * FROM test WHERE C1 NOT IN (
 SELECT C1 FROM test
 GROUP BY C1 HAVING COUNT(DISTINCT(C2)) = 1 AND COUNT(C2) > 1
);

Изменение: вот ссылка sqlfiddle

licensed under cc by-sa 3.0 with attribution.