想要知道我是否可以"人为地"当记录包含特定列的值时插入新记录。例如,假设我的数据库中包含以下两个记录:
Column1 Column2 Column3
-------------------------
DataA1 DataA2 null
DataB1 DataB2 DataB3
现在,如果有值,Column3是我想要触发额外行的列。 Column3基本上是Column2,但有另一个值(这是非规范化的,我无法改变它,所以我需要求助于查询)。所以我想创建一个使用上面的例子返回3行的查询,它应该是这样的:
DataA1 DataA2
DataB1 DataB2
DataB1 DataB3
如何编写我的sql以返回上面的结果?
答案 0 :(得分:4)
使用union all:
SELECT Column1, Column2
FROM TableName
WHERE Column3 IS NULL
UNION ALL
SELECT Column1, Column3
FROM TableName
WHERE Column3 IS NOT NULL
答案 1 :(得分:1)
不完全确定你想要什么,但我认为你正在寻找这样的东西。
select Column1
, Column2
from SomeTable
where Column2 is not null
UNION ALL
select Column1
, Column3
from SomeTable
where Column3 is not null
答案 2 :(得分:1)
当第三列不为null时,您可以使用UNION语句将使用第三列的结果集合并为第二列:
SELECT column1, column2
FROM Sample
UNION
SELECT column1, column3
FROM Sample
WHERE column3 IS NOT NULL