首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在sql中使用if exists或not exists

在sql中使用if exists或not exists
EN

Stack Overflow用户
提问于 2020-02-29 01:36:59
回答 1查看 42关注 0票数 1

大家好,我正在用SQL语言为一个列表编写一个存储过程,例如,我有一个项目列表,我想添加另一个项目,所以我得到了MAX(columName)并添加了+1,这将导致最后一个选项。唯一的问题是我是按人过滤的。这意味着我也可以看到其他人的列表,并向其中添加内容。当有人还没有一个项目时,我的存储过程就不工作了。如何先检查它是否存在?

代码语言:javascript
复制
DECLARE @MAXID INT
SET @MAXID = (SELECT MAX(priority)+1
                FROM    Chores
                WHERE   userID = @user) 

UPDATE Chores
    SET userID= @user,
    priority = @MAXID
FROM
    Chores WITH (NOLOCK)
WHERE choreID= @iD 

当我运行这个程序时,我得到的结果是项目的优先级号为Null。我猜是因为它没有找到任何东西的MAX()

正如您所看到的,我正在按给定的个人将+1添加到条目列表中,但是如果用户的列表中没有已经存在的内容,则我的值为空值。我相信我可以做一个If Exists(),但是如果我从get go开始声明和设置值,它将如何工作呢?另外,其他参数也是传入的,这就是为什么我不声明它们的原因。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-29 01:39:40

我认为你想要:

代码语言:javascript
复制
UPDATE Chores
    SET userID= @user,
    priority = COALESCE(max_priority, 1)
FROM (SELECT c.*, MAX(CASE WHEN userId = @user THEN priority END) OVER () as max_priority
      FROM Chores c
     ) c
WHERE choreID = @iD ;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60456760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档