【发布时间】:2017-06-09 17:59:50
【问题描述】:
假设我有两张桌子:
table_A table_B
+----+ +----+
| id | | id |
+----+ +----+
| 1 | | 3 |
| 2 | | 4 |
+----+ +----+
我想要的是表的UNION,但将 table_B 中的记录作为单独的列,而不是额外的行。行之间不需要有任何关联,例如JOIN。
示例结果集如下所示:
+------+------+
| a.id | b.id |
+------+------+
| 1 | 3 |
| 2 | 4 |
+------+------+
我可以亲近
SELECT a.id, b.id FROM
(SELECT id, 'nothing' from table_A) a JOIN
(SELECT id, 'nothing' from table_B) b ON a.nothing = b.nothing
但这会根据需要创建两倍的行数:
+------+------+
| a.id | b.id |
+------+------+
| 1 | 3 |
| 2 | 3 |
| 1 | 4 |
| 2 | 4 |
+------+------+
和a.id 或b.id 上的GROUP BY 丢失未分组的列中的一个值。
每张桌子的大小可以不同。如果一个表比另一个大,NULL 值应该放在较短的列中。
【问题讨论】:
-
表格的行数是否相同?例如,如果
a的行数比b多怎么办? -
通过执行两个查询并将它们组合到 php 或您使用的任何语言中,可能会有一个更简单的解决方案。我很想知道您要解决的现实问题?
-
@leeyuiwah 每张桌子的大小可以变化。