仅当特定列中不存在值时才更新表

马拉维内尔

在此处输入图片说明我只想更新表 (myTable) 中的列 (variableA)

  1. 在 variableA 列中没有包含此 @variableA 的数据集
  2. 在 variableB 列中已经有一个带有 @variableB 并且在 variableA 列中带有 'DUMMY' 的数据集

仅供参考:另一个界面之前插入了“DUMMY”数据集,稍后我需要使用真实变量/数字更新它们。

下面的代码已经运行良好,但我想知道是否有更“优雅”的解决方案来做到这一点。我想避免/更改最后一行(“SELECT COUNT(*)”等)

DECLARE @variableA nvarchar(10) = '12345'
DECLARE @variableB nvarchar(10) = '67890'

UPDATE TOP (1) myTable
SET variableA = @variableA,
    timestamp = GETDATE()
WHERE variableB = @variableB
AND variableA = 'DUMMY'
AND (SELECT COUNT(*) FROM myTable WHERE variableA = @variableA) = 0

你能帮我找到一个更聪明的解决方案而不是最后一行吗?

佐哈尔·佩莱德

好吧,我会这样写:

UPDATE myTable
SET variableA = @variableA,
    timestamp = GETDATE()
WHERE variableB = @variableB
AND variableA = 'DUMMY'
AND NOT EXISTS (
    SELECT 1 
    FROM myTable 
    WHERE variableA = @variableA
)

首先,使用TOP不指定ORDER BY是错误的,因为数据库表本质上是未排序的,这实际上意味着您可能会得到意想不到的结果。

其次,更改(select count) > 0toexists(select...)可能会提高性能(除非优化器足够聪明,可以对两种情况使用相同的执行计划)

此外,对于您未来的问题 -避免使用图像向我们展示示例数据和所需的结果。使用 DDL+DML 显示示例数据,使用文本显示所需结果。如果您这样做,我们可以将您的示例数据复制到测试环境中,并在发布之前实际测试答案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

仅当表中不存在该值时才更新SQL列

来自分类Dev

仅当表 B 中不存在特定值时才从表 A 中获取值

来自分类Dev

仅当使用MySQL的值不存在时才如何从表中插入值?

来自分类Dev

仅当列中不存在值时才尝试执行SQL命令

来自分类Dev

仅当记录不存在时才插入表

来自分类Dev

仅当其他列中不存在值时更新列

来自分类Dev

仅当新的 providerId 不存在时才更新 MongoDB 字段值

来自分类Dev

仅当值不存在时才从SELECT插入表中

来自分类Dev

仅当一个表中的数据不存在时才将其插入

来自分类Dev

仅当 oracle sql 中不存在值时才插入

来自分类Dev

仅当其他表中不存在数据时,SQL 才从该表中获取数据

来自分类Dev

仅当不存在相同值的列时,Postgres更新列

来自分类Dev

仅当 Document 中不存在 providerId 时才更新提供者数组并增加计数

来自分类Dev

仅当不存在MongoDB文档字段时,才如何更新它们?

来自分类Dev

仅当值不存在时才返回行

来自分类Dev

SQL-仅当B不存在时才选择A

来自分类Dev

仅当队列中不存在项目时才将其添加到队列中

来自分类Dev

仅当文件不存在时,才在用户给定的路径中创建文件

来自分类Dev

仅当参数等于特定值时才如何更新列?

来自分类Dev

如果值不存在则更新表

来自分类Dev

更新表中不存在的记录

来自分类Dev

获取表中不存在的值?

来自分类Dev

查找表中不存在的值

来自分类Dev

仅当另一列具有特定值时才恢复表上的更新更改的 SQL 触发器

来自分类Dev

SSIS-仅基于匹配多个列中的至少一列,才插入不存在的记录

来自分类Dev

连接列中不存在的值

来自分类Dev

在VBA(单词)中,仅当不存在任何注释时,才如何向范围添加注释?

来自分类Dev

仅当不存在记录时,才通过存储过程从TVP列表中插入项目-性能降低

来自分类Dev

返回表中不存在但IN列表中存在的值?

Related 相关文章

  1. 1

    仅当表中不存在该值时才更新SQL列

  2. 2

    仅当表 B 中不存在特定值时才从表 A 中获取值

  3. 3

    仅当使用MySQL的值不存在时才如何从表中插入值?

  4. 4

    仅当列中不存在值时才尝试执行SQL命令

  5. 5

    仅当记录不存在时才插入表

  6. 6

    仅当其他列中不存在值时更新列

  7. 7

    仅当新的 providerId 不存在时才更新 MongoDB 字段值

  8. 8

    仅当值不存在时才从SELECT插入表中

  9. 9

    仅当一个表中的数据不存在时才将其插入

  10. 10

    仅当 oracle sql 中不存在值时才插入

  11. 11

    仅当其他表中不存在数据时,SQL 才从该表中获取数据

  12. 12

    仅当不存在相同值的列时,Postgres更新列

  13. 13

    仅当 Document 中不存在 providerId 时才更新提供者数组并增加计数

  14. 14

    仅当不存在MongoDB文档字段时,才如何更新它们?

  15. 15

    仅当值不存在时才返回行

  16. 16

    SQL-仅当B不存在时才选择A

  17. 17

    仅当队列中不存在项目时才将其添加到队列中

  18. 18

    仅当文件不存在时,才在用户给定的路径中创建文件

  19. 19

    仅当参数等于特定值时才如何更新列?

  20. 20

    如果值不存在则更新表

  21. 21

    更新表中不存在的记录

  22. 22

    获取表中不存在的值?

  23. 23

    查找表中不存在的值

  24. 24

    仅当另一列具有特定值时才恢复表上的更新更改的 SQL 触发器

  25. 25

    SSIS-仅基于匹配多个列中的至少一列,才插入不存在的记录

  26. 26

    连接列中不存在的值

  27. 27

    在VBA(单词)中,仅当不存在任何注释时,才如何向范围添加注释?

  28. 28

    仅当不存在记录时,才通过存储过程从TVP列表中插入项目-性能降低

  29. 29

    返回表中不存在但IN列表中存在的值?

热门标签

归档