TSQL условно IS NULL и = оператор - PullRequest
1 голос
/ 15 декабря 2010

Я пытаюсь написать это в одном утверждении, как это сделать?

-- Is there a block for this user?
SELECT @BlockID = BlockID FROM [Blocks]  
WHERE UserID = @UserID

-- If not exists, get the default one
IF @BlockID IS NULL  
SELECT @BlockID = BlockID FROM [Blocks]  
WHERE UserID IS NULL

Ответы [ 3 ]

2 голосов
/ 15 декабря 2010
SET @BlockID = (SELECT TOP 1 BlockID
                FROM [Blocks]
                WHERE UserID IS NULL OR UserID = @UserID
                ORDER BY CASE WHEN UserID IS NOT NULL THEN 0 ELSE 1 END)
1 голос
/ 15 декабря 2010

coalesce.Он также легко распространяется на более чем два случая.

select
  @BlockID = coalesce(u.BlockID, d.BlockID)
from
  Blocks d
  left join Blocks u on u.UserID = @UserID
where
  d.UserID is null
0 голосов
/ 15 декабря 2010
SET @BlockID = (SELECT BlockID FROM [Blocks] WHERE UserID IS NULL)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...