Значение Oracle SQL-столбца не является критерием - PullRequest
1 голос
/ 27 июля 2011

У меня проблемы с формулировкой оператора SQL для возврата значений, которые я хочу.Мне нужно выбрать данные на основе идентификатора пользователя, значения второго столбца и значения третьего столбца, где значения в этом столбце появляются более одного раза.Все столбцы находятся в одной таблице.

Вот примерный план того, как выглядит мой запрос сейчас, но последнее утверждение AND, очевидно, просто для того, чтобы дать вам представление о том, чего я хочу.Утверждение COUNT, которое сузит результаты, скорее всего, не сработает для меня.

SELECT *
FROM table
WHERE user_id = 123
AND second_id = 1
AND third_id having COUNT(1) > 1;

1 Ответ

4 голосов
/ 27 июля 2011

Если вам нужны только столбцы user_id, second_id, third_id, попробуйте это:

SELECT user_id, second_id, third_id, COUNT(1) 
FROM table
WHERE user_id = 123
AND second_id = 1
GROUP BY  user_id, second_id, third_id
HAVING   COUNT(1) > 1;

Если у вас есть дополнительные столбцы и вы хотите получить эти поля, попробуйте следующее (Oracle 9.2 и выше):

WITH qry AS
(
    SELECT a.*,
            COUNT(1)  OVER(PARTITION BY user_id, second_id, third_id) rpt_count
FROM table a
WHERE user_id = 123
AND second_id = 1
)
SELECT *
  FROM qry 
    WHERE rpt_count > 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...