Получить несколько записей только с помощью SELECT DISTINCT или аналогичных
У меня есть такие записи:
Column1 Column2
A Blue
A Blue
B Red
B Green
C Blue
C Red
С помощью SELECT DISTINCT
Я получаю это:
Column1 Column2
A Blue
B Red
B Green
C Blue
C Red
Что бы я хотел получить:
Column1 Column2
B Red
B Green
C Blue
C Red
Поэтому мне нужно получить только несколько записей столбца column1, которые имеют разные значения в column2. (Я соединяю два стола)
С SELECT DISTINCT я стал ближе к тому, что мне нужно, но я не могу найти способ исключить записи типа "A" в column1, которые всегда имеют одинаковое значение в column2...
5 ответов
Попробуй это:
SELECT * FROM yourtable
WHERE Column1 IN
(SELECT Column1
FROM yourtable
GROUP BY Column1
HAVING COUNT(DISTINCT Column2) > 1
)
DISTINCT
в COUNT
гарантирует, что вы получите только те записи, где Column2
имеет несколько различных значений.
Попробуйте следующий запрос:
SELECT Col1,Col2
FROM tbl
GROUP BY Col1,Col2
HAVING COUNT(Col1)<=1
Вы можете использовать как это
select a.Column1 ,count(a.Column1 )
from
(select Distinct Column1 ,Column2
from Items) a
group by a.Column1
having Count(a.Column1 ) > 1
Предполагая, что вы используете MS SQL Server.... это не так DISTINCT
работает, DISTINCT
применяется ко всему списку столбцов в SELECT
Скажите, вот почему вы получаете результат, который вы упомянули. Попробуйте использовать комбинацию GROUP BY
а также HAVING
как ниже...
SELECT Column1, Column2 FROM [table_name]
GROUP BY Column1, Column2
HAVING COUNT(*) < 2
ORDER BY Column1
Я думаю, что этот код будет работать в большинстве систем:
SELECT Col1,Col2
FROM tbl
GROUP BY Col1,Col2
HAVING COUNT(*)<=1
Смотрите результаты: http://sqlfiddle.com/