mysql - 使用 SELECT 语句进行更新,但在每次更新时重新选择

标签 mysql

我正在尝试通过选择最大的数字并向其添加 1 以生成下一行来更新 MySQL 中的多行。

UPDATE orders SET delivery_number = (
    SELECT new_number FROM (
        SELECT (
            MAX(delivery_number) + 1
        ) AS new_number FROM order_invoice
    ) AS result
) WHERE delivery_number = 0 AND invoice_number != 0;

上面的查询似乎只选择一次,然后每次更新都使用相同的数字。

如何强制它再次扫描表以查找每次更新的最大数字?

最佳答案

update orders, (select @n:=max(delivery_number) from order_invoice) n 
   set delivery_number = @n:=@n+1 
   where delivery_number = 0 and invoice_number != 0;

关于mysql - 使用 SELECT 语句进行更新,但在每次更新时重新选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32251402/

相关文章:

java - mysql查询使用java花费的时间太长

javascript - PHP 和 Ajax : using post ajax return error

java - 连接超时 spring boot 应用程序和 mysql

php - 如何在mysql中连接两列与连接表

php - 数据库表更新不起作用?

mysql - 在子查询返回多行的情况下对值求和。 (我的用例是 2 行)

php - PHP 语句中的 SQL 变量

PHP mysql查询循环以获得最低值

php - 使用邻接列表模型管理 MySQL 中的分层数据

php - 初学者 : PHP Header Error - MySQL