MariaDB / MySQL 合并两个表

MariaDB / MySQL Combine two tables

我有 2 个表 tnHeaders 和 tnData

tn标题

fnIDX fnDESCRIPTION
1 h1
2 h2
3 h3

tn数据

fnIDX fnHEADER_IDX fnDESCRIPTION
1 1 d1
2 1 d2
3 1 d3
4 2 d4
5 2 d5
6 2 d6
7 3 d7
8 3 d8
9 3 d9

并希望生成此输出

fnOUTPUT
h1
d1
d2
d3
h2
d4
d5
d6
h3
d7
d8
d9

我可以在代码中做到这一点没问题,但我如何才能在 SQL 中做到这一点? (使服务器正常工作)

您需要使用 UNION ALL 来描述两个表,并以 headers 位于其数据之上的方式对结果进行排序:

SELECT fnOUTPUT
FROM (
  SELECT fnDESCRIPTION fnOUTPUT, fnIDX header_index, 1 is_header FROM tnHeaders
  UNION ALL
  SELECT fnDESCRIPTION, fnHEADER_IDX, 0 FROM tnData
) t
ORDER BY header_index, is_header DESC, fnOUTPUT;

参见demo