mysql - 如何连接两个表以排序两个唯一的列?
问题描述
我有两张如下图所示的表格
表 A 表 B ------------------------------------ --------------- ---------------- |id|年龄|状态|created_at | |id|身高|created_at | ------------------------------------ --------------- ---------------- |1 |24 | 1 |2019-09-20 02:24:09| |2 |81 |2019-09-20 02:20:15| |2 |45 | 1 |2019-09-20 02:02:19| |3 |88 |2019-09-20 02:20:50| |3 |27 | 1 |2019-09-20 02:10:29| |4 |83 |2019-09-20 02:34:00| |4 |31 | 0 |2019-09-20 02:04:59| |5 |85 |2019-09-20 02:04:49|
并希望将两个表连接在一起以生成一个按 ASC 顺序按 created_at 排序且 id 不是 5 的表
所以基本上我想要这样的东西
表 C ------------------------------------------ |id|年龄|状态|身高|created_at | ------------------------------------------ |2 |45 | 1 | |2019-09-20 02:02:19| |4 |31 | 0 | |2019-09-20 02:04:59| |3 |27 | 1 | |2019-09-20 02:10:29| |2 | | |81 |2019-09-20 02:20:15| |3 | | |88 |2019-09-20 02:20:50| |1 |24 | 1 | |2019-09-20 02:24:09| |4 | | |85 |2019-09-20 02:20:50|
解决方案
你基本上需要做UNION ALL
两个不同的表,然后对它们进行排序。此外,在这种特殊情况下,您实际上并不需要子查询:
询问
(SELECT id, age, status, NULL height, created_at
FROM tableA
WHERE id <> 5)
UNION ALL
(SELECT id, NULL, NULL, height, created_at
FROM tableB
WHERE id <> 5)
-- to sort the unionized resultset
ORDER BY created_at ASC;
结果
| id | age | status | height | created_at |
| --- | --- | ------ | ------ | ------------------- |
| 2 | 45 | 1 | | 2019-09-20 02:02:19 |
| 4 | 31 | 0 | | 2019-09-20 02:04:59 |
| 3 | 27 | 1 | | 2019-09-20 02:10:29 |
| 2 | | | 81 | 2019-09-20 02:20:15 |
| 3 | | | 88 | 2019-09-20 02:20:50 |
| 1 | 24 | 1 | | 2019-09-20 02:24:09 |
| 4 | | | 83 | 2019-09-20 02:34:00 |
推荐阅读
- c# - 错误的用户输入类型时如何处理异常
- python - 从函数中检索、添加多个返回值的代码语法
- php - 从多态表中显示 Laravel Nova 图像
- reactjs - Electron 和 React 使用 PrintJS 打印收据
- c - 使用链表创建Queue数据结构
- arrays - excel - 如何仅使用公式将逗号值分隔到单独的单元格中
- label - gnuplot colorbox标签位置
- python - 仅提取括号内的特定单词
- react-native - 每次应用程序自行刷新时,如何防止expo应用程序注销?
- spring-boot - 如何使用 JPQL 查询访问映射超类字段