使用select inside coalesce设置变量

时间:2010-08-26 20:51:36

标签: 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))

3 个答案:

答案 0 :(得分: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))

答案 1 :(得分: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)

但你可以这样做:

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

答案 2 :(得分:0)

得到了答案 - 我错过了一个(在“coalesce”之后。