1

我正在做这个查询,它首先根据 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 放在底部,但我无法让它们一起工作。一起运行前两个查询很重要。

4

1 回答 1

2

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

使用事务来确保更改作为一个组发生。

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

你只是在盲目地编造语法和语义,并希望它能起作用。这绝不是正确的编程方式。

于 2013-06-10T18:38:11.063 回答