SQL查询以获取只有一个值的项目

问题描述 投票:-5回答:1

我正在寻找一个SQL查询来选择所有ACTIVITY值为'SPORT'且不重复NAME值的值。

表格:

 ID    NAME      ACTIVITY
 1      Sam       Sport
 2      Sam       Music
 3      Alex      Sport
 4      Peter     Reading
 5      Rex       Painting

示例:仅通过一项活动(SPORT)搜索姓名。结果必须是这样的:

3     Alex     SPORT

注意:SAM不在结果中,因为他具有SPORT和Music这两个活动名称,但是Alex仅具有Sport的一项活动。我正在使用excel。

我已经尝试过此代码,但是它返回Sam和Alex。

SELECT [ID], [Name], [Activity]
FROM [TABLE$]
WHERE [ACTIVITY] = 'SPORT'
GROUP BY [ID], [NAME], [Activity]
HAVING COUNT ([Name]) = 1))
sql excel
1个回答
0
投票

如果结果中不需要[ID]列,则:

SELECT [Name], MAX([Activity]) 
FROM [TABLE$]  
GROUP BY [NAME] 
HAVING MIN([ACTIVITY]) = 'SPORT' AND MAX([ACTIVITY]) = 'SPORT'

如果要整行:

SELECT t.* 
FROM [TABLE$] AS t
WHERE t.[ACTIVITY] = 'SPORT' 
AND NOT EXISTS (
  SELECT 1 FROM [TABLE$]
  WHERE [NAME] = t.[NAME] AND [ACTIVITY] <> t.[ACTIVITY]
) 
© www.soinside.com 2019 - 2024. All rights reserved.