SQL перечисляет все строки, где столбец A появляется более одного раза, но имеет разные значения столбца B

У меня есть два столбца, например, я хочу перечислить все строки, в которых элементы в строке A появляются более одного раза в столбце A, но имеют различные значения в столбце B. До сих пор я не нашел ответ

Column A     Column B
Apple         x
Banana        a
Orange        b
Orange        b
Banana        x
Avocado       d

2 ответа

Решение

Попробуйте этот запрос:

SELECT ColumnA
FROM table t
GROUP BY ColumnA
HAVING COUNT(DISTINCT ColumnB) >= 2;

Альтернатива HAVING пункт, который может быть более эффективным:

HAVING MIN(ColumnB) <> MAX(ColumnB)

Попробуйте этот запрос:

SELECT ColumnA
FROM mytable 
GROUP BY ColumnA
HAVING COUNT(*) > 1 AND COUNT(DISTINCT ColumnB) = COUNT(*)
  • Первый предикат в HAVING условие верно, если ColumnA значение появляется более одного раза.
  • Второй предикат верен, если все значения в ColumnB различны в пределах ColumnA группа.

SQL Fiddle Demo

Другие вопросы по тегам