在 SQL 中使用 2 个不同的表插入值

Insert values using 2 different tables in SQL

我正在尝试使用来自同一数据库的 2 个不同的 table 在 SQL 中创建一个新的 table。我尝试使用 Union All 但它给了我一个错误,因为联合需要相同数量的列。如果没有 Union ALL,有什么办法可以做到这一点吗?有人可以告诉我正确的方法吗?预先感谢您的任何帮助。

INSERT [Data].[dbo].[Name] (Id, PlateId,RecommendationId,PositionId, Min, Max)

SELECT id
, pid
, tid
, min
, max
FROM [Users].[dbo].[Settings]
UNION ALL
SELECT tid
FROM [Users].[dbo].[Tips]

如果两个表中的列数不同,您可以select一个文字作为每个缺失列的占位符。

INSERT [Data].[dbo].[Name] (Id, PlateId,RecommendationId,PositionId, Min, Max)

SELECT id
, pid
, tid
, min
, max
FROM [Users].[dbo].[Settings]
UNION ALL
SELECT 'a' AS id
, 'x' AS pid
, tid
, 0  AS min
, 0  AS max
FROM [Users].[dbo].[Tips]

无论您使用什么作为您的值,联合中的两个 select 都需要有相同数量的列。

不是合并来自两个 table 的所有列,而是获取您希望包括的所有列的特定列表:

INSERT [Data].[dbo].[Name] (Id, PlateId, RecommendationId, PositionId, Min, Max)
    SELECT 
        id, pid, tid, min, max
    FROM 
        [Users].[dbo].[Settings]
    UNION ALL
    SELECT 
        id, pid, tid, min, max
    FROM 
        [Users].[dbo].[Tips]

如果您希望包含的列之一只出现在一个 table 中,您可以对该列使用 NULL 或静态值,在 table 上(例如),NULL AS [pid],'' as [pid].