我试图优化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);")
答案 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'