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

求可查询归属两个州的客户记录的SQL语句

需求说明

现有客户数据表如下:

cust_idstate
1CA
2IL
3SC
1PA
3IA
4MO
5VA
4NY

需要编写SQL查询语句,返回所有归属两个及以上州的cust_id对应的全部记录,期望输出结果如下:

cust_idstate
1CA
1PA
3SC
3IA
4MO
4NY

解决方案

方法1:子查询+分组筛选

先通过分组筛选出关联多个州的cust_id,再关联原表获取对应记录:

SELECT t.cust_id, t.state
FROM your_table_name t
INNER JOIN (
    SELECT cust_id
    FROM your_table_name
    GROUP BY cust_id
    HAVING COUNT(DISTINCT state) >= 2
) sub ON t.cust_id = sub.cust_id
ORDER BY t.cust_id, t.state;

方法2:窗口函数(适用于MySQL 8.0+、PostgreSQL、SQL Server等支持窗口函数的数据库)

通过窗口函数计算每个cust_id对应的州数量,直接筛选符合条件的记录:

SELECT cust_id, state
FROM (
    SELECT 
        cust_id, 
        state,
        COUNT(DISTINCT state) OVER (PARTITION BY cust_id) AS state_count
    FROM your_table_name
) t
WHERE state_count >= 2
ORDER BY cust_id, state;

注:请将语句中的your_table_name替换为实际的表名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:20:39