如何从多个表中插入到一个表中?

Posted

技术标签:

【中文标题】如何从多个表中插入到一个表中?【英文标题】:How to INSERT INTO in ONE TABLE from MULTIPLE TABLES? 【发布时间】:2020-01-04 06:54:59 【问题描述】:

我将在三个不同的表上以 GRADES MINUTES 和 SECONDS 为例。

T_GRADES
ID_GRADE
- Primary Key
- Autoincrement
GRADE
- Numeric (all numbers from 0 to 359)

T_MINUTES
ID_MINUTE
- Primary Key
- Autoincrement
MINUTE
- Numeric (all numbers from 0 to 59)

T_SECONDS
ID_SECOND
- Primary Key
- Autoincrement
SECOND
- Numeric (all numbers from 0 to 59)

通过这个查询,我可以查看所有三个表中的所有数据。

SELECT "T_GRADES"."GRADE", "T_MINUTES"."MINUTE", "T_SECONDS"."SECOND"
FROM "T_GRADES" "T_GRADES", "T_MINUTES" "T_MINUTES", "T_SECONDS" "T_SECONDS"
ORDER BY "GRADO", "PRIMO", "SECONDO"

现在,我如何选择 INSERT INTO a 4th TABLE,名为 T_GMS,这些字段就像所有三个表之间的 CROSS JOIN?

T_GMS
ID_GMS
- Primary Key
- Autoincrement
GRADE
- Numeric (all numbers from 0 to 359)
PRIME
- Numeric (all numbers from 0 to 59)
SECOND
- Numeric (all numbers from 0 to 59)

非常感谢您的回答。

【问题讨论】:

与问题无关,但是:dba.stackexchange.com/questions/154251 【参考方案1】:

要根据查询结果创建新表,您可以在 FROM 之前使用 INTO [Table] 命令。 例如

SELECT * INTO [Tbl_NewTable] FROM [tbl_User],[tbl_Role] 

如果你的表已经存在,你必须在 SELECT 之前使用 INSERT INTO [Table] 命令

INSERT INTO [Tbl_NewTable] SELECT * FROM [tbl_User],[tbl_Role] 

确保您在查询结果中选择的列必须与 NewTable 列相同

【讨论】:

Owais,我必须从“三个”不同的表中选择“三个字段”,而不仅仅是从“一个”表中选择, 要从 SELECT 语句创建新表,您需要在“SQL”中使用 create table .. as select .. - 您编写了 T-SQL 答案,但 sql 标记指的是标准 SQL,而不是特定的 DBMS 产品 @LucaDELPARTITA 是的,您可以从不同的表中选择列【参考方案2】:

假设你的第四张桌子存在,你可以简单地做

INSERT INTO T_GMS ("GRADE", "PRIME", "SECOND")
SELECT "GRADE", "MINUTE", "SECOND"
FROM "T_GRADES", "T_MINUTES", "T_SECONDS"
ORDER BY "GRADE", "MINUTE", "SECOND"

主键将自动生成,您可以按照 T_GMS 后括号中列出的列的顺序指定哪些值进入哪些列。

为简单起见,我删除了所有别名(我认为您不需要它们)。此外,您的 SQL 在命名上似乎有点混乱,所以请检查。

【讨论】:

以上是关于如何从多个表中插入到一个表中?的主要内容,如果未能解决你的问题,请参考以下文章

如何从每一行插入到多个表中

如何从单个控制器将数据插入到 laravel 中的多个表中?

如何将存储在引用表中的引用值插入到另一个表中?

如何使用 SSIS 将多个表中的数据插入到多个表中?

如何将多个复选框值插入表中?

如何一次将多个值插入到 postgres 表中?