TSQL 条件 IS NULL 和 = 运算符

发布于 2024-10-07 22:44:53 字数 276 浏览 0 评论 0原文

我想在一份声明中写下这一点,该怎么做?

-- 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

I am trying to write this in one statement, how to do this?

-- 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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

土豪 2024-10-14 22:44:53
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)
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)
再浓的妆也掩不了殇 2024-10-14 22:44:53

合并。它还可以轻松扩展到两个以上的情况。

select
  @BlockID = coalesce(u.BlockID, d.BlockID)
from
  Blocks d
  left join Blocks u on u.UserID = @UserID
where
  d.UserID is null

coalesce. It also expands to more than two cases easily.

select
  @BlockID = coalesce(u.BlockID, d.BlockID)
from
  Blocks d
  left join Blocks u on u.UserID = @UserID
where
  d.UserID is null
反差帅 2024-10-14 22:44:53
SET @BlockID = (SELECT BlockID FROM [Blocks] WHERE UserID IS NULL)
SET @BlockID = (SELECT BlockID FROM [Blocks] WHERE UserID IS NULL)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文