2014-12-04 3 views
1

У меня есть таблица объединений с объединенным первичным ключом из двух столбцов. Я хочу, чтобы запросить все записисочетание счетчика и запроса столбца

columnA having count > 1 

и

columnB = value1 and value2 

мой запрос до сих пор выглядит следующим образом

select 
    columnA 
from tableA 
where columnB = 1 and 
columnA in (
     select 
      columnA 
     from tableA 
     group by columnA 
     having count(columnA) > 1) 

или

select 
     columnA 
    from tableA 
    where columnB = 2 and 
    columnA in (
      select 
       columnA 
      from tableA 
      group by columnA 
      having count(columnA) > 1) 

как я могу запросить

...columnB = 1 and columnB = 2 and columnA in (select .... 

ответ

2
select columnA 
from tableA 
where columnB in (1,2) 
group by columnA 
having count(distinct columnB) = 2 

Имея оба значения 1 и 2 в columnB содержит полный набор автоматически count(columnA) > 1

Если вы хотите либоcolumnB условие (columnB, имеющий 2 значения) или условие columnA затем сделать

select columnA 
from tableA 
group by columnA 
having count(*) > 1 
or count(distinct columnB) = 2 

или columnB должны быть 1 и 2

select columnA 
from tableA 
group by columnA 
having count(*) > 1 
or 
( 
    sum(case when columnB = 1 then 1 else 0 end) > 0 and 
    sum(case when columnB = 2 then 1 else 0 end) > 0 
) 
+0

спасибо, что работает, но что, если я хочу, чтобы запрашивать количество (Columna) = 2? – Markus

+0

, затем добавьте 'и count (columnA) = 2' до конца. –

+0

, но не дает мне эту комбинацию столбцов (1,3), потому что столбец B в (1,2) является или ссылкой, не так ли? – Markus

Смежные вопросы