MySQL Insert,带有一个值的select子查询
我有一个MySQL insert查询,它需要从另一个表中提取一个数据字段,我想知道这是否可以通过select子查询完成MySQL Insert,带有一个值的select子查询,mysql,Mysql,我有一个MySQL insert查询,它需要从另一个表中提取一个数据字段,我想知道这是否可以通过select子查询完成 INSERT INTO resources ( client_account_id, date_time, resource_name, resource_description_id, ) VALUES ( {0}, '{1}', '{2}', {3}, ) 我需要一个select查询
INSERT INTO resources
(
client_account_id,
date_time,
resource_name,
resource_description_id,
)
VALUES
(
{0},
'{1}',
'{2}',
{3},
)
我需要一个select查询来从另一个表中获取资源描述id
SELECT resource_description_id
FROM resource_descriptions
WHERE resource_description = '{0}'
我见过复制整个表的例子,但我不确定当只需要另一个表中的一个字段,而其他字段来自一个表单时,如何做到这一点
谢谢 子查询只需选择所需的值即可。比如:
INSERT INTO resources
(
resource_description_id
)
(
SELECT resource_description_id
FROM resource_descriptions
WHERE resource_description = '{0}'
)
INSERT INTO resources
(
client_account_id,
date_time,
resource_name,
resource_description_id,
)
SELECT {0}, '{1}','{2}', resource_description_id
FROM resource_descriptions
WHERE resource_description = '{3}'
您可以使用select查询的结果进行插入
INSERT INTO resources
(
client_account_id,
date_time,
resource_name,
resource_description_id
)
SELECT
'{0}',
'{1}',
'{2}',
resource_description_id
FROM resource_descriptions
WHERE resource_description = '{0}'
MySQL不喜欢大多数查询,除非我在子查询周围添加了括号。这是我用过的
INSERT INTO resources
(
client_account_id,
date_time,
resource_name,
resource_description_id,
)
VALUES
(
'{0}',
'{1}',
'{2}',
(SELECT resource_description_id
FROM resource_descriptions
WHERE resource_description = '{0}')
)
这个答案的问题是,如果资源描述不匹配,那么您将一无所获。你试过运行你的回复吗?我有一个表单,用户提交资源名称、描述和关键字,然后我插入到资源表中,我插入到资源描述表中,所以描述总是匹配的。但这让我认为存在重复资源描述的可能性。有没有办法从表中提取最近插入的行?
INSERT INTO resources
(
client_account_id,
date_time,
resource_name,
resource_description_id,
)
VALUES
(
'{0}',
'{1}',
'{2}',
(SELECT resource_description_id
FROM resource_descriptions
WHERE resource_description = '{0}')
)