我有以下查询返回所选用户的电子邮件 ID 的逗号分隔列表。
CREATE TABLE TEST
(
ID INT PRIMARY KEY,
FIRSTNAME VARCHAR(30) NOT NULL,
LASTNAME VARCHAR(30) NOT NULL,
EMAIL VARCHAR(50)
)
INSERT INTO TEST VALUES (1, 'Tom', 'Lew', 'tom@hotmail.com')
INSERT INTO TEST VALUES (2, 'Tom', 'Lew', 'tom@hotmail.com')
INSERT INTO TEST VALUES (3, 'Jack', 'Stan', 'jstan@hotmail.com')
INSERT INTO TEST VALUES (4, 'Tom', 'Reed', 'tomreed@hotmail.com')
INSERT INTO TEST VALUES (5, 'Tom', 'Reed', 'tomr@hotmail.com')
INSERT INTO TEST VALUES (6, 'Tom', 'Reed', 'treed@hotmail.com')
DECLARE @result VARCHAR(MAX)
SELECT @result = COALESCE(@result + ',', '') + [EMAIL]
FROM [TEST]
WHERE [FirstName] = 'Tom' AND [LastName] = 'Reed'
SELECT @result
我需要修改查询,使其仅返回一个值 - 如果只有一个电子邮件 ID 与“Tom Reed”关联,则返回一个电子邮件 ID - 如果为“Tom Reed”找到多个电子邮件 ID,则为字符串“多个”
我不知何故能够得到想要的结果,但不确定性能。在实际场景中,该表将有数千条记录,并将连接到其他表。
SELECT
DISTINCT
CASE
WHEN CNT = 1 THEN EMAIL
ELSE 'MULTIPLE'
END
FROM (SELECT
ID, EMAIL,
COUNT(*) OVER() CNT
FROM TEST
WHERE [FirstName] = 'Tom' AND [LastName] = 'Reed') T
对不起,如果主题行和内容不匹配。不确定描述。
期望的结果:
如果询问“汤姆·里德”
Output: Multiple
如果询问“汤姆·卢”
Output: Multiple
如果询问“杰克·斯坦”
Output: jstan@hotmail.com