#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
оконные функции.