我试图将具有相同类型的两列的结果导入单列,例如
table
id secId
1 2
3 1
5 1
1 4
我想像id或secId = 1
那样检索它们id
2
3
4
5
我尝试过内连接,但它为我提供了2列数据冗余
答案 0 :(得分:4)
您不需要任何Join
,这个简单的查询就可以了
select if(id=1, secId, id)
from yourTable
where id = 1 or secId = 1;
您选择id
或secId
等于1
的所有数据,具体取决于两者中的哪一项等于显示1
的{{1}}或secId
。
假设这两个值中只有一个可以是id
。
如果有可能有两个值,那么你可以使用union语法作为@AndreasWederbrand描述。
答案 1 :(得分:2)
您可以使用union
来获取
select id from yourTable where secId = 1
union
select secId from yourTable where id = 1
如果您不喜欢union all
也执行union
distinct
答案 2 :(得分:0)
您还可以使用CASE语句在两列之间进行选择。
SELECT CASE
WHEN id = 1 --if this is a 1 select the other col
THEN secId
ELSE id --otherwise just select this column
END AS newCol
FROM yourTable
WHERE id = 1
OR secId = 1
答案 3 :(得分:0)
以下是最简单的代码:
Select Case When id = 1 then secId end ID from yourtable