【问题标题】:SQL If condition is true Update tableSQL 如果条件为真 更新表
【发布时间】:2019-01-28 20:36:40
【问题描述】:

我正在尝试编写一个可以检查某个条件的单行 sql 语句,如果满足条件,我需要使用新值更新表。下面是我想做的,我只是不知道如何做到这一点。任何帮助将不胜感激。

if (select * from table
    where field1 = '0000000001' and field2 = 'XXX')
update table set field1 = '9876543210'
where field2 = 'XXX';

我收到以下错误:

在上下文中指定的非布尔类型的表达式 预期状态,靠近“更新”

【问题讨论】:

  • 您使用的是哪个 dbms? (该代码看起来根本不像 ANSI SQL。)
  • 表格有,而不是字段。
  • 代码不正确我只是想解释我需要做什么。我不确定如何完成这项工作
  • 我正在命名我的列字段
  • 你给你的表起什么名字?床单?

标签: sql if-statement sql-update


【解决方案1】:

这样做:

update table set field1 = '9876543210'
 where field1 = '0000000001' and field2 = 'XXX';

这样,您将在 field1 == '0000000001' and field2 = 'XXX' 的所有行上将 field1 值更新为值 '9876543210'

【讨论】:

  • 我需要确保 field1 是 '0000000001' 在更新之前是这个值
  • 你会@J_Newby。这是你更新的条件。如果不满足条件,则不更新该行。我建议你阅读一下update SQL 语句。
【解决方案2】:

您可以在此处验证您的查询。您错过了检查的EXISTS 键。所以只有它返回错误。

if (EXISTS(select 1 from table where field1 = '0000000001' and field2 = 'XXX'))

update table set field1 = '9876543210' where field2 = 'XXX'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 2017-04-29
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    相关资源
    最近更新 更多