带有选择和硬编码值的 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 插入的主要内容,如果未能解决你的问题,请参考以下文章
sql 将单元ID和“硬编码”数据选择到查询结果集中,该结果集可以粘贴到sql开发人员中,用于缺少特定单元的单元