我需要帮助运行SQL查询我收到此错误
子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。
这是我试图运行的查询:
select *
from [Group]
where [Group].Name IN (ISNULL((Select * from Split(@AdGroups)), [Group].Name))
编辑:
如果@AdGroups
是NULL
,我需要Group
表中的所有行,但如果其中有任何名称,我需要只包含这些名称的行。
答案 0 :(得分:1)
问题是Select * from Split(@AdGroups)返回多行。此子查询用作ISNULL的参数。 ISNULL只接受一个值,检查它是否为null,如果第一个值为null,则返回第二个值。它无法处理多个值。
我不相信你需要的是null。
select * from [Group] where [Group].Name IN ( * from Split(@AdGroups))
如果此查询未提供所需结果,请在修改问题时显示错误的结果和所需的结果。
答案 1 :(得分:0)
将isnull()
逻辑移动到子查询中:
select *
from [Group] g
where g.Name IN (Select coalesce(t.name, g.Name)
from Split(@AdGroups)) as t(name)
)