当前位置: 首页 > 面试题库 >

一次针对两个表的条​​件SQL更新语句

濮丁雷
2023-03-14
问题内容

我想一次更新两个表。下面的代码似乎工作正常。但是,在某些情况下,bidGroups中没有条目,这意味着整个语句将失败。我如何调整它,以便它更新第一位(watchedItems),并且如果watchedItems.bidGroupID为NULL则不尝试第二部分

UPDATE watchedItems, bidGroups 
SET watchedItems.won=1, bidGroups.bidGroupQty=bidGroups.bidGroupQty-1 
WHERE watchedItems.id=2 
AND watchedItems.aid=200618152822 
AND bidGroups.bidGroupID=watchedItems.bidGroupID 
AND bidGroups.id=2;

我试过了,但是语法是错误的。

UPDATE  watchedItems, bidGroups 
SET watchedItems.won=1, 
CASE WHEN watchedItems.bidGroupID IS NOT NULL THEN bidGroups.bidGroupQty=bidGroups.bidGroupQty-1 
ELSE END
WHERE watchedItems.id=2 
AND watchedItems.aid=200618152822 
AND bidGroups.bidGroupID=watchedItems.bidGroupID 
AND bidGroups.id=2

问题答案:

以这种方式尝试LEFT JOIN:

UPDATE watchedItems 
LEFT JOIN bidGroups ON watchedItems.bidGroupID = bidGroups.bidGroupID AND bidGroups.id=2
SET watchedItems.won=1, bidGroups.bidGroupQty=bidGroups.bidGroupQty-1 
WHERE watchedItems.id=2 
AND watchedItems.aid=200618152822;

......



 类似资料:
  • 问题内容: 我有两个表需要相同的值以实现非规范化。 这是查询。 第一张桌子 第二张桌子 如您所见,两个表之间的唯一区别是它们的名称和两个表没有该字段 无论如何将两个更新合并为一个? 问题答案: 如文档中所述,应该可以进行多表更新。 http://dev.mysql.com/doc/refman/5.5/en/update.html 注意:多表不支持LIMIT,因此根据具体情况,这可能会引起更多麻烦

  • 问题内容: 我是SQL的新手,有人可以帮助我修复触发器问题吗? 我有这两个表(“评论”和“报价”),我想更新“评论”表,然后在“插入”,“更新”和“删除”中获取要约表中的数据。如果更新成功,我想使用ReviewId和ReviewDate更新商品表。 我正在使用Azure提供的SQL Server。 UserKey和Asin是唯一的值,所以这就是我用来链接这些表的东西。我将非常感谢您的帮助! 桌子:

  • 问题内容: 乍看之下,这个问题似乎很容易,但我只是没有找到合理的解决方案。 考虑具有以下特征的表: 每天,都会生成N个新行,用于表示将来的日期,并且“名称”来自有限列表。我想在有新数据时插入新行,但是如果已经有一个包含“名称”和“日期”的行,只需对其进行更新。 请注意,目前提出的检查条件的SPROC解决方案是不可行的,因为这是从另一种语言推送的数据。 问题答案: 那是为了什么 手册页面在这里。 诀

  • (相同的情况发生在4个不同的服务器上 - Windows服务器2019) 我有两个Python3脚本,每个运行在独立的Windows任务调度器任务下。 详细信息: 任务1运行脚本1-任务2运行脚本2(为这个问题泛化) 两个脚本对两个Windows任务计划程序任务使用相同的凭据 两个脚本对SQL服务器使用相同的凭据 两个脚本都更新同一SQL服务器数据库中的表(凭据对两个表具有相同的权限) 两个脚本都

  • 问题内容: 我有一张表: 在UI上更新消息后,我调用存储的proc来更新该表。在某些情况下,用户可能仅更新主题,而在其他情况下,仅更新正文。我希望此存储的过程仅更新已更改的内容,因此我还传递了一些标志,用于显示主题或正文是否已更新: 现在我很困惑如何构建条件语句。我的第一个想法是使用: …但这似乎不是正确的语法,因为它必须是分配的右侧。 有什么想法可以做到吗?(请记住,实际上有6个参数可以更新,而

  • 问题内容: 考虑到TimeExited为null,并且计算机名与“ cm”参数相同,我试图更新表Log(具有最新TimeAccessed的字段)的最后一条记录。我有这个但得到错误,“在SQL语句末尾缺少分号” 怎么了?? 前两行没什么问题,可以正常工作,这是最后两行带来的问题 问题答案: Access SQL不会使用它使用use ,并且正如在问题注释中引用的另一个问题中所提到的那样,不允许您按照所