SQL-запрос, чтобы найти значения столбца не сопоставления - PullRequest
0 голосов
/ 20 февраля 2009

Трудно описать словами, поэтому предположим, что таблица в следующем примере:

| id | col1 | col2 | 
--------------------
| 1  |  aa  |  12  |
| 2  |  aa  |  12  |
| 3  |  bb  |  13  |
| 4  |  cc  |  13  |

Я хотел бы запрос, который выбирает строки 3 и 4 или даже просто значение 13

Что-то вроде проверки этого предположения: «все одинаковые значения col2 должны отображать одно значение col1»

Я проверял, выполняя 'group by' и подсчет строк для каждого столбца в отдельных запросах и сравнивая, но было бы неплохо иметь возможность выбирать ошибочные строки

Процедура запроса или pl / sql будет в порядке

Ответы [ 2 ]

5 голосов
/ 20 февраля 2009

Чтобы получить только "13":

select col2
from mytable
group by col2 having count(distinct col1) > 1;

Чтобы получить строки:

select * from mytable where col2 in
( select col2
  from mytable
  group by col2 having count(distinct col1) > 1
);
1 голос
/ 20 февраля 2009

Если вы хотите, чтобы col2 основывался на уникальном col1, вот оно:

SELECT col2 FROM [table] GROUP BY col1 HAVING count(id) = 1;

Если вы хотите, чтобы col2 основывался на уникальном значении col1 и col2, должно работать следующее:

SELECT col2 FROM [table] GROUP BY col1, col2 HAVING count(id) = 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...