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

求助:编写SQL查询存在多条dsp_fg='Y'记录的code对应行

解决存在多条主要描述记录的查询问题

嘿,这个问题我熟!我来给你两种实用的解决方案,帮你找出那些存在多条*主要描述(dsp_fg='Y')*的code对应的所有记录:

方法一:使用窗口函数(推荐,简洁高效)

窗口函数可以直接在原表基础上计算每个code下的主要描述数量,一步筛选出目标行,适合支持窗口函数的数据库(比如MySQL 8+、PostgreSQL、SQL Server等):

WITH problematic_code_stats AS (
    SELECT 
        *,
        -- 统计每个code下dsp_fg='Y'的记录数
        COUNT(CASE WHEN dsp_fg = 'Y' THEN 1 END) OVER (PARTITION BY code) AS primary_desc_count
    FROM your_table_name -- 替换成你的表名
)
-- 筛选出主要描述数大于1的code对应的所有行
SELECT *
FROM problematic_code_stats
WHERE primary_desc_count > 1;

这个CTE(公共表表达式)会先给每条记录打上所属code的主要描述数量标签,之后只需要筛选数量大于1的记录即可,结果会包含该code的所有行(不管dsp_fg是'Y'还是'N')。

方法二:使用子查询关联(兼容性强)

如果你的数据库不支持窗口函数(比如MySQL 5.x),可以先用子查询找出存在多条主要描述的code,再关联原表获取所有对应行:

SELECT t.*
FROM your_table_name t -- 替换成你的表名
INNER JOIN (
    -- 先找出有多个dsp_fg='Y'的code
    SELECT code
    FROM your_table_name
    WHERE dsp_fg = 'Y'
    GROUP BY code
    HAVING COUNT(*) > 1
) bad_codes ON t.code = bad_codes.code;

这个方法先通过分组统计筛选出违规的code,再用关联查询把这些code的所有记录拉出来,逻辑清晰,兼容性更好。

额外说明

如果你只需要查看那些dsp_fg='Y'的违规行(而不是该code的所有行),只需要在最终的SELECT语句里加上AND dsp_fg = 'Y'的条件即可。

内容的提问来源于stack exchange,提问作者Jason Riley

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:55:08