如何解决使用STUFF函数仅带那些与表中的列匹配的值
我正在使用填充函数:
STUFF((SELECT disTINCT ',' + CAST(id as varchar)
FROM users
WHERE userID = depatments.userID
FOR XML PATH('')),1,'') AS Users
每个用户都有一个部门,我想返回与该部门匹配的users表的那些值,但相反,它返回此列中所有行的所有值。我该如何解决?
解决方法
首先,我的猜测是用户拥有id
,但没有userid
。所以:
STUFF((SELECT DISTINCT ',' + CAST(id as varchar(255))
FROM users u
WHERE u.id = departments.userID
FOR XML PATH('')
),1,''
) AS Users
注意:
- 从不不加长度使用
varchar
(或相关类型)。 SQL Server的默认长度因上下文而异,可能不够大。 - 始终限定查询中的所有列引用,因此很清楚它们来自何处。如果您在查询中使用
u.userid - departments.userId
,那么您将得到一个错误,只需修复代码即可。 - 使用表别名,以便查询更易于编写和阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。