Множество НЕ отличное - PullRequest
14 голосов
/ 06 ноября 2008

У меня есть база данных MS Access, и мне нужно создать SQL-запрос, который позволит мне выбрать все не отдельные записи в одном столбце, сохраняя при этом все значения.

В этом случае более чем когда-либо пример стоит тысячи слов:

Таблица:

A B C
1 x q
2 y w
3 y e
4 z r
5 z t
6 z y

Волшебство SQL

Результат:

B C
y w
y e
z r
z t
z y

По сути, он удаляет все уникальные значения столбца B, но сохраняет несколько строк данные хранятся Я могу «сгруппировать по b», а затем «считать> 1», чтобы получить не различимое, но в результате будет показан только один ряд из B, а не 2 или более, которые мне нужны.

Любая помощь?

Спасибо.

Ответы [ 4 ]

27 голосов
/ 06 ноября 2008
Select B, C
From Table
Where B In
    (Select B From Table
     Group By B
     Having Count(*) > 1)
7 голосов
/ 06 ноября 2008

Другой способ вернуть желаемые результаты - это:

select *
from
    my_table
where 
    B in 
    (select B from my_table group by B having count(*) > 1)
3 голосов
/ 06 ноября 2008
select 
  * 
from 
  my_table t1, 
  my_table t2
where 
  t1.B = t2.B
and
  t1.C != t2.C

-- apparently you need to use <> instead of != in Access
-- Thanks, Dave!

Что-то подобное?

1 голос
/ 06 ноября 2008

объедините уникальные значения B, которые вы определили с помощью группы по b, и сосчитайте> 1 обратно в исходную таблицу, чтобы извлечь значения C из таблицы.

...