mysql - SQL - 在 Mysql 中将一列拆分为两列

标签 mysql sql

我有这张 table 。考虑到 id 从 0 开始。

表一

ID     Letter
1        A
2        B
3        C
4        D
6        E

我需要以下输出

Col1     Col2
NULL      A
B         C
D         NULL
E         NULL

我尝试使用带有 id、id - 1 和 id + 1 的联合,但我无法弄清楚如何根据 id 获取字母,甚至尝试了奇怪的逻辑,但没有任何效果。

感谢任何帮助。

谢谢

最佳答案

您没有发布数据库引擎,所以我假设模数操作数为 % 的 PostgreSQL。

查询应该是:

select o.letter, e.letter
  from (
    select id, letter, id as base from my_table where id % 2 = 0
  ) o full outer join (
    select id, letter, (id - 1) as base from my_table where id % 2 <> 0
  ) e on e.base = o.base
  order by coalesce(o.base, e.base)

请对以下选项持保留态度,因为我没有办法在 MySQL 5.6 中对其进行测试。在没有完全外连接的情况下,您可以执行两个外连接,然后将它们合并,如:

select * from (
  select o.base, o.letter, e.letter
    from (
      select id, letter, id as base from my_table where id % 2 = 0
    ) o left join (
      select id, letter, (id - 1) as base from my_table where id % 2 <> 0
    ) e on e.base = o.base
  union
  select e.base, o.letter, e.letter
    from (
      select id, letter, id as base from my_table where id % 2 = 0
    ) o right join (
      select id, letter, (id - 1) as base from my_table where id % 2 <> 0
    ) e on e.base = o.base
) x
order by base

关于mysql - SQL - 在 Mysql 中将一列拆分为两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52766533/

相关文章:

Mysql Distinct 返回所有重复行

php - 显示mysql Select查询结果

sql - 如何计算每组的百分比?

php - 如何在mysql中显示所有除法总计

mysql - 显示记录的 SQL 查询

php - mysql 查询按精确匹配顺序与多个 LIKE 子句

mysql - 如何使用sql简单查询从不同表插入数据

sql - EF Core 整数字段有效地包含子字符串

mysql - 每个类别仅显示 2 个软件

sql - 如何在postgres中提取第一个和剩余的单词