gpt4 book ai didi

mysql - 如何合并具有不同列名的两个表

转载 作者:太空宇宙 更新时间:2023-11-03 10:52:44 24 4
gpt4 key购买 nike

我有两个表,分别是 A 和 B。

表A:

+------------+
| manager_id |
+------------+
| 100 |
| 102 |
| 103 |
| 124 |
| 149 |
| 101 |
| 201 |
| 205 |
+------------+

表:B

+------------+
| first_name |
+------------+
| Steven |
| Lex |
| Alexander |
| Kevin |
| Eleni |
| Neena |
| Michael |
| Shelley |
+------------+

我想合并这两个表。输出表应该看起来像..

表a的第一行应该与表b的第一行合并。表a的第2行应该与表b的第2行合并。依此类推......

输出:

+------------+-------------+
| manager_id | first_name |
+------------+-------------+
| 100 | steven |
| 101 | lex |
| 102 | alexander |
| 103 | kevin |
| 124 | eleni |
| 149 | neena |
| 201 | michael |
| 205 | shelley |
+------------+-------------+

我尝试了不同的连接和联合,但没有得到所需的输出。提前致谢

注意:这些表是查询的结果,因此不能添加任何额外的列。

最佳答案

这是一个非常糟糕的主意,原因很简单:SQL 表(包括 MySQL 表)没有排序。因此,无法保证 select * 的结果将按任何特定顺序排列。没有第一行、第二行等等——至少不能保证。

也就是说,有时您会遇到加载多个没有自动递增 id 的表,您可以解决它。我强烈建议您事后验证结果,因为没有保证。您需要为此使用变量:

select a.rn, a.manager_id, b.first_name
from (select @rn_a := @rn_a + 1 as rn, a.*
from a cross join
(select @rn_a := 0) const
) a join
(select @rn_b := @rn_b + 1 as rn, b.*
from b cross join
(select @rn_b := 0) const
) b
on a.rn = b.rn;

我想补充一点,这种方法在大多数支持简单选择并行处理的数据库中不起作用。例如,Oracle 和 SQL Server 肯定不会按插入顺序返回大表(除非你摆弄一堆选项)。 MySQL 确实似乎按插入顺序返回表(假设没有中间更新或删除),尽管不能保证这样做。

关于mysql - 如何合并具有不同列名的两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23218037/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com