Mysql 使用选定数据执行多个插入
我想执行这个sudo查询:Mysql 使用选定数据执行多个插入,mysql,sql,Mysql,Sql,我想执行这个sudo查询: INSERT INTO table1 (foreign_key, meta_key, meta_value) VALUES ( (SELECT id FROM table2 WHERE condition = 'met'), 'first meta key', 'first meta value' ) VALUES ( (SELECT id FROM table2 WHERE condition = 'met'), 'second meta key
INSERT INTO table1 (foreign_key, meta_key, meta_value)
VALUES (
(SELECT id FROM table2 WHERE condition = 'met'), 'first meta key', 'first meta value'
)
VALUES (
(SELECT id FROM table2 WHERE condition = 'met'), 'second meta key', 'second meta value'
)
VALUES (
(SELECT id FROM table2 WHERE condition = 'met'), 'third meta key', 'third meta value'
)
其中,SELECT
语句后面的字符串是INSERT
我想我的INSERT SELECT
syntex基本上是正确的,但是我不确定是否有多个INSERT
。我知道我可以用一个普通的INSERT
语句这样做,但是我不确定SELECT
是否在VALUES
子句中
我正在使用一个实时数据库,虽然我已经备份了所有内容,但我希望将直接实验减到最少。您可以使用UNION:
INSERT INTO table1 (foreign_key, meta_key, meta_value)
SELECT id, 'first meta key', 'first meta value' FROM table2 WHERE condition = 'met'
UNION
SELECT id, 'second meta key', 'second meta value' FROM table2 WHERE condition = 'met'
UNION
SELECT id, 'third meta key', 'third meta value' FROM table2 WHERE condition = 'met'
您需要在值之间添加逗号
INSERT INTO table1 (foreign_key, meta_key, meta_value)
VALUES (
(SELECT id FROM table2 WHERE condition = 'met'), 'first meta key', 'first meta value'
),
(
(SELECT id FROM table2 WHERE condition = 'met'), 'second meta key', 'second meta value'
),
(
(SELECT id FROM table2 WHERE condition = 'met'), 'third meta key', 'third meta value'
)
并确保每个子查询只返回1行
试试这个
或者使用union作为正常方式:
INSERT INTO table1 (foreign_key, meta_key, meta_value)
SELECT id, 'first meta key' , 'first meta value' FROM table2 WHERE condition = 'met')
UNION ALL
SELECT id, 'second meta key', 'second meta value' FROM table2 WHERE condition = 'met')
UNION ALL
SELECT id, 'third meta key' , 'third meta value' FROM table2 WHERE condition = 'met')
我可能在这里引起了误会。我将更新这个问题-您能告诉我这是否仍然有效吗?不,您的查询不起作用(我使用的是SQLServer2005),带有union的查询可以工作