gpt4 book ai didi

mysql - 无 ID 查询的 SQL Update 语句 Take ID

转载 作者:行者123 更新时间:2023-11-29 03:22:07 25 4
gpt4 key购买 nike

我有一个如下表所示的表格。

我需要更新没有 second_id (second_id=0) 的每一行。

但只有 Status 为 0 且 second_id 为 0 的每一行,然后我必须使用 Record 的最后一行中的最后一个 second_id 值和 second_id 并将此 second_id 作为 id 并将其自动递增到 second_id = 的所有记录0,状态为 0。

在下表中,只有 id 为 5 的 Record 和 second_id 为 6(最后一个 second_id 5 + 1)的 Record 会被更新。

只有使用 SQL 语句才有可能吗?

+------+------------+---------+---------+--------+| id   | second_id  | y       | z       | status |+------+------------+---------+---------+--------+|    1 |        3   |      ja | 1       |   0    ||    2 |        4   |     jaa | 2       |   0    ||    3 |        5   |      ja | 1       |   0    ||    4 |        0   |    jaaa | 3       |   1    ||    5 |        0   |     jaa | 2       |   0    ||    6 |        0   |   aaaaa | 2       |   0    |+------+------------+---------+---------+--------+

更新后的结果:

+------+------------+---------+---------+--------+| id   | second_id  | y       | z       | status |+------+------------+---------+---------+--------+|    1 |        3   |      ja | 1       |   0    ||    2 |        4   |     jaa | 2       |   0    ||    3 |        5   |      ja | 1       |   0    ||    4 |        0   |    jaaa | 3       |   1    ||    5 |        6   |     jaa | 2       |   0    ||    6 |        7   |   aaaaa | 2       |   0    |+------+------------+---------+---------+--------+

最佳答案

以下 SQL 将执行您所要求的操作:

微软 SQL:

DECLARE @I INT = (SELECT TOP 1 SECOND_ID FROM TESTTABLE ORDER BY SECOND_ID DESC)

UPDATE TESTTABLE
SET SECOND_ID = @I, @I = @I + 1
WHERE SECOND_ID = 0 AND STATUS = 0

MySQL:

SET @I := (SELECT second_id FROM MyTable ORDER BY second_id DESC LIMIT 1);

UPDATE MyTable
SET second_id = @I := @I + 1
WHERE second_id = 0 AND status = 0;

对于单行解决方案,创建一个存储过程。

DELIMITER $$

CREATE PROCEDURE RunIncrement()
BEGIN
DECLARE I = (SELECT second_id FROM MyTable ORDER BY second_id DESC LIMIT 1);
UPDATE MyTable
SET second_id = I := I + 1
WHERE second_id = 0 AND status = 0;
END$$

DELIMITER ;

然后在需要的时候调用过程。

CALL RunIncrement();

关于mysql - 无 ID 查询的 SQL Update 语句 Take ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42536788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com