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

如何用T-SQL筛选全部购买产品均为laptop的客户记录

T-SQL 实现筛选全部购买产品为laptop的客户

首先假设你的表名为CustomerPurchases,包含字段CustomerName(客户姓名)、Product(购买产品),以下是几种常用实现方案:

方案1:分组聚合判断(最简写法)

利用分组后聚合值的特性判断,逻辑简洁执行效率高:

SELECT CustomerName
FROM CustomerPurchases
GROUP BY CustomerName
HAVING MIN(Product) = 'laptop' AND MAX(Product) = 'laptop'

逻辑说明:如果客户所有购买记录的产品都是laptop,那么分组后该客户的产品最小值、最大值均为laptop;只要存在其他产品,两个值必然有一个不等于laptop,直接被过滤。

方案2:NOT EXISTS 排除法(逻辑最直观)

直接排除存在非laptop购买记录的客户,适合表有CustomerName+Product联合索引的场景,性能表现优异:

SELECT DISTINCT CustomerName
FROM CustomerPurchases c1
WHERE NOT EXISTS (
    SELECT 1 
    FROM CustomerPurchases c2 
    WHERE c2.CustomerName = c1.CustomerName 
      AND c2.Product <> 'laptop'
)

方案3:带计数统计的实现

如果需要同步返回该客户购买laptop的总次数,可以用条件计数实现:

SELECT CustomerName, COUNT(*) AS LaptopPurchaseTimes
FROM CustomerPurchases
GROUP BY CustomerName
-- 统计非laptop的购买记录数为0,即所有购买都是laptop
HAVING COUNT(CASE WHEN Product <> 'laptop' THEN 1 END) = 0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:54:03