Выберите строки, которые имеют разные значения для столбца, учитывая другой столбец

#sql

#sql

Вопрос:

Дана таблица с 2 столбцами a, b.

Я хочу выбрать строки, которые для заданного a могут иметь разные значения b .

В этом примере мне нужны первые 2 строки

 a | b
-----
1 | 1  
1 | 2 
2 | 1
2 | 1
3 | 1
  

Комментарии:

1. Какую СУБД вы используете?

Ответ №1:

Попробуйте это:

 SELECT t1.*
FROM mytable AS t1
JOIN (
   SELECT a
   FROM mytable
   GROUP BY a
   HAVING COUNT(DISTINCT b) > 1
) AS t2 ON t1.a = t2.a
  

Ответ №2:

Вы не упомянули свою СУБД, но в Oracle вы можете сделать:

 select a,b
from (
  select a,b, 
         count(distinct b) over (partition by a) as num_b
  from the_table
) t
where num_b > 1
  

К сожалению, Postgres или SQL Server не поддерживают distinct оконные функции.