Mysql查询变得复杂 - 需要围绕多个查询语句包装另一个SELECT

时间:2013-06-10 18:34:02

标签: mysql

我正在执行此查询,该查询有效并首先根据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再次置于底部,但我无法全部合作。一起运行前两个查询非常重要。

1 个答案:

答案 0 :(得分:2)

通过运行多个语句在PHP中执行此操作。

使用transaction确保更改以群组形式进行。

您正在尝试使用SQL语言中根本不存在的语法。您不能在子查询中放置INSERT或UPDATE。您不能在以分号分隔的子查询中使用多个语句。您不能像往常一样在随机位置打开子查询的括号。

你只是盲目地编写语法和语义,并希望它能够工作。这绝不是编程的正确方法。