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

如何编写SQL查询提取表中index列值相同行的指定字段数据

SQL查询实现方案

需求说明

从业务表中筛选出index字段值重复出现(相同值出现次数≥2)的行,提取对应行的company、disease1、disease2、disease3四个字段内容。

实现语句

写法1:窗口函数实现(兼容MySQL 8.0+/PostgreSQL/SQL Server等主流新版本数据库)

注意index是SQL保留关键字,需要按你使用的数据库规则转义:

-- MySQL写法(保留字用反引号转义)
SELECT company, disease1, disease2, disease3
FROM (
    SELECT 
        company, disease1, disease2, disease3,
        COUNT(*) OVER (PARTITION BY `index`) AS index_cnt
    FROM 你的业务表名
) t
WHERE index_cnt >= 2;
-- PostgreSQL写法(保留字用双引号转义)
SELECT company, disease1, disease2, disease3
FROM (
    SELECT 
        company, disease1, disease2, disease3,
        COUNT(*) OVER (PARTITION BY "index") AS index_cnt
    FROM 你的业务表名
) t
WHERE index_cnt >= 2;
-- SQL Server写法(保留字用方括号转义)
SELECT company, disease1, disease2, disease3
FROM (
    SELECT 
        company, disease1, disease2, disease3,
        COUNT(*) OVER (PARTITION BY [index]) AS index_cnt
    FROM 你的业务表名
) t
WHERE index_cnt >= 2;

写法2:子查询匹配实现(兼容所有数据库版本,包括低版本不支持窗口函数的场景)

-- 以MySQL为例,其他数据库修改index的转义符即可
SELECT company, disease1, disease2, disease3
FROM 你的业务表名
WHERE `index` IN (
    SELECT `index`
    FROM 你的业务表名
    GROUP BY `index`
    HAVING COUNT(*) >= 2
);

注意事项

  1. 请将代码中的你的业务表名替换为你实际的表名
  2. 因为index属于SQL标准保留关键字,必须加对应数据库的转义符包裹,否则会报语法错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 12:45:05