Return a value if no rows match

前端 未结 2 356
粉色の甜心
粉色の甜心 2021-01-21 13:29

The [authorityID] (TinyInt) column will never be null.

What I want is to return a 15 if there are no rows. With the query below I

相关标签:
2条回答
  • 2021-01-21 14:09

    As you noted, if the query returns no rows, there's nothing to apply the isnull on. One dirty trick is to use union all and (ab)use the top construct:

    SELECT TOP 1 authorityID
    FROM   (SELECT authorityID
            FROM   [docAuthority] WITH (nolock) 
            WHERE  [grpID] = 0 AND [sID] = 42
            UNION ALL
            SELECT 15) t
    
    0 讨论(0)
  • 2021-01-21 14:18
    SELECT  authorityId = isnull(( SELECT   [authorityID]
                                   FROM     [docAuthority] WITH ( NOLOCK )
                                   WHERE    [grpID] = 0
                                            AND [sID] = 42
                                 ), 15)
    
    0 讨论(0)
提交回复
热议问题