带有选择和硬编码值的 SQL 插入

Posted

技术标签:

【中文标题】带有选择和硬编码值的 SQL 插入【英文标题】:SQL insert with select and hard-coded values 【发布时间】:2010-11-10 04:57:54 【问题描述】:

出于说明目的,假设我有一个数据库电影(标题、导演、成本、利润)。

现在我想根据在另一个表中找到的导演和硬编码值在 Movies 表中插入一个新行。

INSERT INTO Movies 
SELECT name 
  FROM Directors 
 WHERE name = 'Lucas';

我是如何理解选择插入工作的,但是如果我想使用选择以及传递硬编码值怎么办。所以理论上是这样的:

INSERT INTO Movies 
VALUES(Star Wars,(SELECT name 
                    FROM Directors 
                   WHERE name='Lucas'), 50000, 1000000);

这可能吗?

【问题讨论】:

如果你必须从director表中选择name [lucas],那么如果我们直接使用lucas而不是从另一个表中选择它不是很简单吗? @Kool,我认为这只是一个例子,但老实说,如果导演 没有 没有 Lucas(错误或不插入行,我不确定该行为)。 @paxdiablo,插入零行 这是一个人为的例子来理解我想要的一般概念。 【参考方案1】:
INSERT INTO Movies (Title, Director, Cost, Profits)
SELECT 'Star Wars', name, 50000, 1000000
FROM Directors WHERE name = 'Lucas'

【讨论】:

如果包含movies表的字段名就更好了 @KoolKabin 是的,但这些细节并没有提出问题 也许你应该仔细看看 :-)【参考方案2】:

因为您可以在 select 语句中指定硬编码值,所以使用起来可能更简洁:

insert into movies (title, director, cost, profits)
   select 'Star Wars', name, 50000, 1000000 from directors where name = 'Lucas';

【讨论】:

【参考方案3】:

是的,这是可能的。用户 INSERT .. SELECT 语法。有关详细信息,请参阅reference。硬编码值应该在您的 SELECT 查询中,而不是在 VALUES 中。例如。

INSERT INTO Movies
SELECT 'Star Wars', name, 50000, 1000000
FROM Directors 
WHERE name = 'Lucas';

【讨论】:

【参考方案4】:

您将数据库作为电影(标题、导演、成本、利润)。 如果您想在各个表中输入值,请先选择表,然后在这些表中插入值。

【讨论】:

以上是关于带有选择和硬编码值的 SQL 插入的主要内容,如果未能解决你的问题,请参考以下文章

MediaCodec 硬编码

如何选择几个硬编码的 SQL 行?

sql 将单元ID和“硬编码”数据选择到查询结果集中,该结果集可以粘贴到sql开发人员中,用于缺少特定单元的单元

尽量不在 SQL 查询中硬编码日期范围(Python、SQL 服务器)

iOS开发小记(十三)

WITH 子句可以在不使用 Select 语句的情况下具有硬编码值吗?