使用来自 Select 的值插入查询

Posted

技术标签:

【中文标题】使用来自 Select 的值插入查询【英文标题】:Insert query with value from Select 【发布时间】:2018-06-12 09:53:51 【问题描述】:

我正在尝试使用 Select 查询 2 个不同的表,结果是一个字符串列表。

select Lock 
from [dbo].[LabelLock]
where [Value] = @Label 
UNION
select Lock
from [dbo].[ProdLock]
where [Value] = @Process

到目前为止一切都很好。我想要的是某种方式以这种方式将上述 Select 的每个结果的记录插入到我的 [Locks] 表中:

insert into [dbo].[Locks]
(Id, Locks)
values (@Id, .....)

所以@Id 始终是固定的,但锁应该来自 Select,我希望为 Select 查询提供的每个结果插入一条记录。我怎样才能以聪明的方式实现这一目标?提前致谢!

【问题讨论】:

您的代码看起来不像 mysql 代码。您确定您使用的是 MySQL 而不是 SQL Server? 【参考方案1】:
INSERT INTO
    [dbo].[Locks]
(
    Id,
    Locks
)
SELECT
    @Id,
    Lock 
FROM
    [dbo].[LabelLock]
WHERE
    [Value] = @Label 
UNION
SELECT
    @Id,
    Lock
FROM
    [dbo].[ProdLock]
WHERE
    [Value] = @Process

【讨论】:

表格中没有可供选择的 ID。 Id 并非来自那里 您在 Id 前面加上 @ 表示参数/变量。那你想做什么? Locks 表中的 Id 列是自动递增的值吗? 好吧,插入的值不用Values关键字来表示? 不,插入不需要 value 关键字。

以上是关于使用来自 Select 的值插入查询的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UNIX 批处理作业中将备份作为来自 oracle select 语句的插入查询?

想把select查询的结果作为insert的值插入数据表

Wordpress:Ajax 无法插入、查询和结果数据

使用 UNION 增强来自多个表的插入查询的性能

Presto 数组包含来自另一列的值(超集 SQL 查询)

使用选择和连接的复杂插入语句