我在插入第三个表时插入来自2个不同表的2个值存在问题。
第一张表是:
第二张表是:
第三张表是:
我希望在将数据插入第三个表时从第一个表中获取author_name
并从第二个表中获取category_name
。
我有类似的东西,但它没有用。
INSERT INTO posts (post_category, post_author, post_title, post_content)
SELECT
category_name
FROM
categories
WHERE
category_name='python',
SELECT
author_name
FROM
authors
WHERE
author_name = 'm0jito',
'Lorem Ipsum',
'Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum ')
期待您的帮助。
答案 0 :(得分:3)
除了@ sagi的解决方案,你应该能够在INSERT VALUES
中使用标量子查询:
INSERT INTO posts (post_category, post_author, post_title, post_content)
VALUES
(
(SELECT
category_name
FROM
categories
WHERE
category_name='python'),
(SELECT
author_name
FROM
authors
WHERE
author_name = 'm0jito'),
'Lorem Ipsum',
'Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum '
)
如果category_name
或author_name
不唯一,则会失败。
顺便说一句,你可能想要返回类别/作者 id 而不是 name ,因为根本不需要当前的SELECT。但我认为这只是一个例子。
答案 1 :(得分:2)
您需要将这些表连接在一起:
INSERT INTO posts (post_category, post_author, post_title, post_content)
SELECT c.category_name,a.author_name,'Lorem Ipsum','Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum'
FROM categories c
CROSS JOIN authors a
WHERE c.category_name = 'python'
AND a.author_name = 'm0jito'
我使用了CROSS JOIN
,因为你没有在这两个表之间提供任何关系(有点可疑),如果有某种关系列,请将其更改为INNER JOIN
并使用{ {1}}条款。