我在编写SQL语句以返回我想要的值时遇到问题。我需要根据用户ID,第二列的值和第三列值选择数据,其中该列中的值出现多次。所有列都在同一个表中。
以下是我的查询现在的大致轮廓,但最后一个AND语句显然只是为了让您了解我想要的内容。将结果缩小的COUNT语句可能对我不起作用。
SELECT *
FROM table
WHERE user_id = 123
AND second_id = 1
AND third_id having COUNT(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