Oracle SQL列值与标准不同

时间:2011-07-27 18:14:36

标签: sql oracle dml

我在编写SQL语句以返回我想要的值时遇到问题。我需要根据用户ID,第二列的值和第三列值选择数据,其中该列中的值出现多次。所有列都在同一个表中。

以下是我的查询现在的大致轮廓,但最后一个AND语句显然只是为了让您了解我想要的内容。将结果缩小的COUNT语句可能对我不起作用。

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

1 个答案:

答案 0 :(得分:4)

如果您只需要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