【问题标题】:Inserting values in a new column depending on values in existing column根据现有列中的值在新列中插入值
【发布时间】:2016-06-21 06:57:58
【问题描述】:

假设我有两列 A 和 B

我想通过从 A 列中提取数据来更新 B 列中的内容,如下所示; B栏目前为空白

A栏

A
C00
C00 Law Firm
C00
C00 Law Firm
C00
M00 Federal Government'

所需的 B 列

B
C00
Q00
C00
Q00
C00
M00 

如果 A 具有我未在更新语句中指定的任何其他值,则 B 应将 'Q00' 作为其对应值。

我试过了

If table.a like '%M00' UPDATE table set table.b= 'M00' else 'Q00'

UPDATE table set table.b= 'A00' WHERE table.a like '%A00' else 'Q00';

但它们不起作用

【问题讨论】:

  • “我没有指定”是什么意思?您可能想发布到目前为止您已经尝试过的内容。请出示您的更新声明。
  • 我试过 If table.a like '%M00' UPDATE table set table.b= 'M00' else 'Q00' 但这不起作用 “我没有指定”我的意思是如果说我正在更新多个值并且我错过了和/或故意不指定一些更新语句中“a”的值,那么B中对应的值应该是Q00
  • 也试过下面的查询UPDATE table set table.b= 'A00' WHERE table.a like '%A00' else 'Q00';

标签: mysql sql sql-server sql-server-2008 toad


【解决方案1】:

您可以将事务用于多个更新查询

    BEGIN;
    update table set b = table.a where a like '%MOO';
    update table set b = 'QOO' where a not like '%MOO';
    COMMIT;

【讨论】:

  • 比你;我希望更新多个值,例如 B00 表示 %B00,C00 表示 %C00 我可以将它们放在另一个下方以进行更新吗?
  • 是的,你可以。如果您的问题已得到解答,请点赞标记为已回答。
  • 上述查询出现此错误PLS-00103: Encountered the symbol ";" when expecting one of the following: ( begin case declare exit for goto if loop mod null pragma raise return select update while with <an identifier>
  • 语法可能略有不同,具体取决于您用于运行 sql 的内容。你在用什么?
【解决方案2】:

这是一个示例,请根据您的需要进行相应更新:

update Table1
SET
col2 = CASE WHEN col1 like '%1%' THEN col1
else '2222'
END

【讨论】:

  • 非常感谢!是否可以为其添加多个更新?
  • @DollarVora 该查询将使用任一值更新表中的所有记录。但所有行都没有减少。
  • 我的意思是我可以拥有update Table1 SET col2 = CASE WHEN col1 like '%1%' THEN col1 else when col1 like '%2%' THEN 'some value' END
猜你喜欢
  • 2021-04-19
  • 1970-01-01
  • 1970-01-01
  • 2017-08-10
  • 2019-08-20
  • 2019-09-29
  • 1970-01-01
  • 1970-01-01
  • 2018-10-07
相关资源
最近更新 更多