如何从多个表中插入到一个表中?
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 在命名上似乎有点混乱,所以请检查。
【讨论】:
以上是关于如何从多个表中插入到一个表中?的主要内容,如果未能解决你的问题,请参考以下文章