SQL Insert插入多行,但只执行一次子查询

时间:2014-06-24 13:19:34

标签: mysql sql subquery insert-into

我试图优化INSERT INTO语句只使用子查询一次,因为它始终是相同的值:

继承我的示例代码

INSERT INTO TABLE1 (id, number) VALUES 
((SELECT other_id from TABLE2 WHERE somevalue = "test"), 12),
((SELECT other_id from TABLE2 WHERE somevalue = "test"), 13),
...,
...;

不是sql-expert,但这看起来不是一个好方法,因为每个插入都会执行相同的子查询。

有替代解决方案吗?

另外,我知道我可以预先选择ID并将其存储在这样的变量中(伪代码):

$var = mysql_query("SELECT other_id from TABLE2 WHERE somevalue = 'test'")
 mysql_query("INSERT INTO TABLE1 (id, number) VALUES 
    ($var, 12),
    ($var, 13);")

1 个答案:

答案 0 :(得分:2)

INSERT
INTO    table1 (id, number)
SELECT  other_id, number
FROM    table2
CROSS JOIN
        (
        SELECT  12 number
        UNION ALL
        SELECT  13
        ) q
WHERE   somevalue = 'test'