You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle中按指定条件筛选并获取最新更新数据的SQL查询问题

需求与SQL优化

需求说明

筛选表TRANSACTIONAL.TBL_EVENT_NOTIFICATION_DETAILS中符合以下要求的记录:

  • RECIEVER_ROLE_ID 等于 'B'
  • ACTION_STATUS 等于 1
  • 同时满足:RECIEVER_ID为0或593728771,IS_AVAILABLE=1,STATE_ID=24,DISTRICT_ID=491,NOTIFICATION_ID=4426
  • 对每个RECIEVER_ID,仅保留UPDATED_AT时间最新的条目

原尝试SQL

SELECT
        "NOTIFICATION_DETAILS_ID",
        "RECIEVER_ROLE_ID",
        "RECIEVER_ID",
        "STATE_ID",
        "DISTRICT_ID",
        "ACTION_STATUS",
        "IS_AVAILABLE",
        "CREATED_AT",
        "UPDATED_AT",
        "CREATED_YEAR",
        "NOTIFICATION_ID",
        ROW_NUMBER() OVER (PARTITION BY "RECIEVER_ID" ORDER BY "UPDATED_AT" DESC) as R
    FROM
        "TRANSACTIONAL"."TBL_EVENT_NOTIFICATION_DETAILS"
    WHERE
        (("RECIEVER_ID" =0)
            OR ("RECIEVER_ID" =593728771))
        AND ("RECIEVER_ROLE_ID" ='B')
        AND ("IS_AVAILABLE" =1)
        AND "STATE_ID" =24
        AND "DISTRICT_ID" =491
        AND NOTIFICATION_ID =4426

修正后的SQL

SELECT *
FROM (
    SELECT
        "NOTIFICATION_DETAILS_ID",
        "RECIEVER_ROLE_ID",
        "RECIEVER_ID",
        "STATE_ID",
        "DISTRICT_ID",
        "ACTION_STATUS",
        "IS_AVAILABLE",
        "CREATED_AT",
        "UPDATED_AT",
        "CREATED_YEAR",
        "NOTIFICATION_ID",
        ROW_NUMBER() OVER (PARTITION BY "RECIEVER_ID" ORDER BY "UPDATED_AT" DESC) AS R
    FROM
        "TRANSACTIONAL"."TBL_EVENT_NOTIFICATION_DETAILS"
    WHERE
        "RECIEVER_ID" IN (0, 593728771)
        AND "RECIEVER_ROLE_ID" = 'B'
        AND "IS_AVAILABLE" = 1
        AND "STATE_ID" = 24
        AND "DISTRICT_ID" = 491
        AND "NOTIFICATION_ID" = 4426
        AND "ACTION_STATUS" = 1
) AS subquery
WHERE R = 1

关键修改点

  • 添加ACTION_STATUS = 1条件,匹配需求中的核心筛选要求
  • 将原查询嵌套为子查询,在外层通过R = 1过滤,确保每个RECIEVER_ID只返回UPDATED_AT最新的记录
  • 将RECIEVER_ID的OR判断简化为IN语句,优化代码可读性

内容的提问来源于stack exchange,提问作者Abhishek Mishra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 12:57:49