如何将同一 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 所有 idsecId 等于 1 的数据,然后,取决于您显示的两者中哪一个等于 1 secIdid.

这里假设两个值中只有一个可以是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