使用SQL CASE语句替换列

时间:2018-03-16 19:43:58

标签: mysql sql case

这是我的问题:

select CASE WHEN ATTRIBUTE_SOURCE is NULL THEN <do calculation>
            ELSE ATTRIBUTE_SOURCE END AS ATTRIBUTE_SOURCE,
            * 
from (<a table containing an ATTRIBUTE_SOURCE column>)

计算工作正常,问题是结果表有两个ATTRIBUTE_SOURCE列,一个来自原始表,另一个是CASE语句添加的。有没有办法替换原始表中的ATTRIBUTE_SOURCE列完全使用我的CASE语句生成的ATTRIBUTE_SOURCE列?

2 个答案:

答案 0 :(得分:0)

如果您真的想要用您可以使用的计算替换原始值 asi in you sample

的情况
  update my_table 
  set ATTRIBUTE_SOURCE = CASE WHEN ATTRIBUTE_SOURCE is NULL THEN <do calculation>
                    ELSE ATTRIBUTE_SOURCE END 

或简单地更新..其中

 update my_table 
  set ATTRIBUTE_SOURCE =  <do calculation>
  where ATTRIBUTE_SOURCE is null 

答案 1 :(得分:0)

问题是通过使用&#39; *&#39;来检索表格中的所有列。从查询表中确定所需的实际列,并在选择列表中明确命名,确保排除ATTRIBUTE_SOURCE。

许多DBA会告诉他们存在的祸根是一个只能抓取网站内所有内容的查询。 SELECT *很少是正确的选择。