我正在执行此查询,该查询有效并首先根据SELECT语句插入多个记录,然后使用UPDATE更新表。
INSERT table_name (field1, field2)
SELECT 103, field_x FROM another_table WHERE field_y != "";
UPDATE table_name SET field3 = CONCAT('103', '-', id)
我现在需要添加另一个SELECT语句,其中结果多次执行整个批次。有点像下面,但当然不会奏效。我可以用PHP做到这一点,但是在一个查询中得到很多东西会很好。
SELECT xxx FROM third_table (
INSERT table_name (field1, field2)
SELECT xxx, field_x FROM another_table WHERE field_y != "";
UPDATE table_name SET field3 = CONCAT('xxx', '-', id)
)
我已经尝试将SELECT再次置于底部,但我无法全部合作。一起运行前两个查询非常重要。
答案 0 :(得分:2)
通过运行多个语句在PHP中执行此操作。
使用transaction确保更改以群组形式进行。
您正在尝试使用SQL语言中根本不存在的语法。您不能在子查询中放置INSERT或UPDATE。您不能在以分号分隔的子查询中使用多个语句。您不能像往常一样在随机位置打开子查询的括号。
你只是盲目地编写语法和语义,并希望它能够工作。这绝不是编程的正确方法。