如何将同一 table 中的两列合并为单列
how to join two columns into single column from the same table
我正在尝试将具有相同类型的两列的结果转换为单列,例如
table
id secId
1 2
3 1
5 1
1 4
我想像 id 或 secId = 1 那样检索它们
id
2
3
4
5
我试过内连接,但它给了我 2 列数据冗余
你不需要任何 Join
,这个简单的查询就可以了
select if(id=1, secId, id)
from yourTable
where id = 1 or secId = 1;
您 select 所有 id
或 secId
等于 1
的数据,然后,取决于您显示的两者中哪一个等于 1
secId
或 id
.
这里假设两个值中只有一个可以是1
.
如果有可能有两个值,那么您可以使用 @AndreasWederbrand 描述的联合语法。
您可以使用 union
来获取
select id from yourTable where secId = 1
union
select secId from yourTable where id = 1
如果您不喜欢 union
的方式,请使用 union all
distinct
您还可以使用 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
这是最简单的代码:
Select Case When id = 1 then secId end ID from yourtable
我正在尝试将具有相同类型的两列的结果转换为单列,例如
table
id secId
1 2
3 1
5 1
1 4
我想像 id 或 secId = 1 那样检索它们
id
2
3
4
5
我试过内连接,但它给了我 2 列数据冗余
你不需要任何 Join
,这个简单的查询就可以了
select if(id=1, secId, id)
from yourTable
where id = 1 or secId = 1;
您 select 所有 id
或 secId
等于 1
的数据,然后,取决于您显示的两者中哪一个等于 1
secId
或 id
.
这里假设两个值中只有一个可以是1
.
如果有可能有两个值,那么您可以使用 @AndreasWederbrand 描述的联合语法。
您可以使用 union
来获取
select id from yourTable where secId = 1
union
select secId from yourTable where id = 1
如果您不喜欢 union
的方式,请使用 union all
distinct
您还可以使用 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
这是最简单的代码:
Select Case When id = 1 then secId end ID from yourtable