使用SQL中的多个列创建包含值的列

时间:2018-05-17 08:28:41

标签: sql variables select multiple-columns

我想在表中添加一列,其中包含两列中的一列的值,具体取决于哪一行包含该值。

例如,

SELECT
  concat("Selecting Col1 or 2", cast("Col1" OR "Col2" as string)) AS relevantinfo,
FROM table

我不太了解SQL,我知道这个查询不起作用。这甚至可以吗?

Col1    Col2
1       
         4
3
4
         5

最终结果

Col1    Col2    relevantinfo
1                1
        4        4
3                3
4                4
        5        5

2 个答案:

答案 0 :(得分:1)

您可以使用COALESCE函数,该函数将返回列表中的第一个非空值。

SELECT col1, col2, COALESCE(col1, col2) AS col3 
FROM t1;

工作示例:http://sqlfiddle.com/#!9/05a83/1

答案 1 :(得分:0)

我不会改变表结构来添加可以通过简单查询检索的冗余信息。

我宁愿在IFNULL/ISNULL(ColumnName, 'Value to use if the col is null')使用这种查询:

--This will work only if there can't be a value in both column at the same time
--Mysql
SELECT CONCAT(IFNULL(Col1,''),IFNULL(Col2,'')) as relevantinfo FROM Table

--Sql Server
SELECT CONCAT(ISNULL(Col1,''),ISNULL(Col2,'')) as relevantinfo FROM Table