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

SQL如何根据不同列的取值条件筛选对应art字段所属的行数据

SQL查询解决方案

以下是适配需求的查询实现,支持主流SQL引擎:

支持窗口函数的SQL引擎(MySQL8.0+、PostgreSQL、Oracle等)

使用CTE+窗口函数实现,逻辑清晰易维护:

WITH art_group_marker AS (
    SELECT
        *,
        -- 按art分组标记当前组是否存在stdvpuni=1的行
        MAX(CASE WHEN stdvpuni = 1 THEN 1 ELSE 0 END) OVER(PARTITION BY art) AS group_has_stdvpuni1
    FROM 替换为你的实际表名
)
SELECT * FROM art_group_marker
WHERE
    -- 规则1:stdvpuni为1的行直接返回
    stdvpuni = 1
    -- 规则2:组内无stdvpuni=1的行时,返回组内STDUNIABG为1的行
    OR (group_has_stdvpuni1 = 0 AND STDUNIABG = 1);

低版本MySQL兼容实现(不支持窗口函数/CTE场景)

用关联子查询实现相同逻辑:

SELECT t.*
FROM 替换为你的实际表名 t
WHERE
    t.stdvpuni = 1
    OR (
        NOT EXISTS (SELECT 1 FROM 替换为你的实际表名 t2 WHERE t2.art = t.art AND t2.stdvpuni = 1)
        AND t.STDUNIABG = 1
    );

补充说明

  • 若同一个art分组下存在多条STDUNIABG=1的行,上述语句会全部返回,如需仅返回单条,可自行添加排序逻辑后取首行即可
  • 运行前请将代码中的替换为你的实际表名修改为你自己的数据表名称

内容的提问来源于stack exchange,提问作者Gregor Schuerer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:09:03