【问题标题】:Oracle SQL- column value being not distinct as criteriaOracle SQL- 列值不作为标准不同
【发布时间】:2011-10-14 12:26:40
【问题描述】:

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

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

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

【问题讨论】:

    标签: sql oracle dml


    【解决方案1】:

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

    【讨论】:

    • 第二个选项看起来像我需要的,谢谢。但是,我认为如果您能提供帮助,我还需要一步 - 我需要将这些结果用作子查询的一部分,因此完整查询将查看这些结果并从结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 1970-01-01
    相关资源
    最近更新 更多