使用select inside coalesce设置变量

dmr*_*dmr 3 sql variables select sql-server-2000 coalesce

如何修复存储过程的这一部分?

select将返回1,0或null.如果select返回1或0,我希望@override设置为该值.如果它返回null,那么我希望@override设置为1.

我的语法出了点问题; 我被告知"选择'附近的语法不正确"和"附近的错误sytax")'".

这是sql:

set @override = (coalesce(select override from groupPreferences g inner join
preferences p on g.preferenceId = p.preferenceId where groupId = 13
and description = 'myDescription'), 1))
Run Code Online (Sandbox Code Playgroud)

bod*_*dee 7

set @override = (coalesce((select override from groupPreferences g inner join
preferences p on g.preferenceId = p.preferenceId where groupId = 13
and description = 'myDescription'), 1))
Run Code Online (Sandbox Code Playgroud)


Ada*_*Dev 5

我会去寻找像这样的东西:

select @override = override 
from groupPreferences g 
    inner join preferences p on g.preferenceId = p.preferenceId 
where groupId = 13
    and description = 'myDescription'

SET @override = ISNULL(@override, 1)
Run Code Online (Sandbox Code Playgroud)

但你可以这样做:

SELECT @override = ISNULL((select override 
from groupPreferences g 
    inner join preferences p on g.preferenceId = p.preferenceId 
where groupId = 13
    and description = 'myDescription'), 1)
Run Code Online (Sandbox Code Playgroud)