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

如何在T-SQL奖品表中查询同时获得Gold与Silver奖品的用户

解决方法

要找出同时获得Gold和Silver奖品的用户,你可以用以下几种T-SQL实现方式:

方法1:GROUP BY + HAVING子句

先筛选出涉及目标奖品的记录,按用户分组后,通过COUNT(DISTINCT Prize)确保用户同时拥有两种奖品:

SELECT [User]
FROM Entries
WHERE Prize IN ('Gold', 'Silver')
GROUP BY [User]
HAVING COUNT(DISTINCT Prize) = 2;

方法2:EXISTS子查询

通过两次存在性检查,确认用户同时存在Gold和Silver的获奖记录:

SELECT DISTINCT [User]
FROM Entries e
WHERE EXISTS (SELECT 1 FROM Entries WHERE [User] = e.[User] AND Prize = 'Gold')
  AND EXISTS (SELECT 1 FROM Entries WHERE [User] = e.[User] AND Prize = 'Silver');

方法3:自连接

将表与自身连接,匹配同一用户的Gold和Silver记录,最后去重得到结果:

SELECT DISTINCT e1.[User]
FROM Entries e1
JOIN Entries e2 ON e1.[User] = e2.[User]
WHERE e1.Prize = 'Gold' AND e2.Prize = 'Silver';

原查询问题说明

  • 使用OR会返回所有获得Gold或Silver的用户,包括只拥有其中一种的用户,不符合需求。
  • 使用AND在同一行条件中不可能成立,因为每条记录只能对应一个奖品。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 12:32:49