在 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]
.
我正在尝试使用来自同一数据库的 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]
.