将5表合并为一个表

时间:2017-09-05 23:30:53

标签: sql sql-insert

所以我有5个表需要进入Result; 2位,3位,4位,5位和6位。它们具有相同的结构。以下代码是否可以完成任务:

null

或者它需要看起来像这样

 Insert into Result select * from 2-digit, 3-digit, 4-digit, 5-digit, 6-digit;

以下是一些示例数据。期望的结果是简单地将这三个表合并为一个而不操纵数据或行。最终结果应该有12行。

Insert into Result select * from 2-digit, select * from 3-digit, select * from 4-digit,select * from 5-digit,select * from 6-digit;

2 个答案:

答案 0 :(得分:1)

您可以使用SELECT . . . UNION解决此问题:

 SELECT * FROM table1
 UNION ALL 
 SELECT * FROM table2
 UNION ALL
 SELECT * FROM table3
 . . . and so on

如果表结构不是完全相同(它们具有不同数量的列或列具有略微不同的名称,或者具有不同的顺序),那么您将不得不替换{{ 1}}明确列出了列名。

首先考虑五个表是数据库设计中的一个缺陷 - 为什么不将它们全部放在一个表中,然后只需要*出你想要的行。

答案 1 :(得分:0)

使用SUBSTRING()

 INSERT INTO Results
 SELECT SUBSTRING('102100',1,2) [2-digits],
        SUBSTRING('102100',1,3) [3-digits],
        SUBSTRING('102100',1,4) [4-digits],
        SUBSTRING('102100',1,5) [5-digits],
        '102100' [6-digits]
   FROM tablename

结果

2-digits    3-digits    4-digits    5-digits    6-digits
10          102         1021        10210       102100

替代' 102100'使用表格中的列名