编辑我没有CREATE TEMPORARY TABLE权限。还有另一种方式吗?
MySQL数据库有一个表User
,其中包含id
列。
另一个表格为UserThing
,其中user
列是User.id
我正在尝试为UserThing
中的某些行插入一行User
,就像这样。
INSERT INTO `UserThing` (`user`, `foo`, `bar`)
SELECT `id`, 123, 456 FROM `User` WHERE some_condition;
我很确定这是可以的,只是UserThing
上有一个可能会更新User
中的列的触发器。这会创建一个MySql不允许的依赖循环,虽然我知道这个触发器的动作与some_condition
正交,所以在实践中并不重要。
我知道我可以为单个值编写SELECT @some_var := ...
,但我无法使其适用于多个值。局部变量是解决这个问题的正确方法吗?如果是这样,请问是什么语法?如果没有,还有其他一些纯SQL方法吗?
答案 0 :(得分:0)
我会使用临时表并将它们INSERT INTO ... SELECT FROM
分解为以下语句:
SELECT `id`, 123, 456 INTO #tmp FROM `User` WHERE some_condition;
INSERT INTO `UserThing` (`user`, `foo`, `bar`)
SELECT * FROM #tmp
DROP TABLE #tmp