gpt4 book ai didi

mysql - UPDATE 表名, (SELECT @id := 0) dm SET sale_id = (@id := @id 1)

转载 作者:行者123 更新时间:2023-11-29 13:44:51 25 4
gpt4 key购买 nike

我的数据库中有下表:

CREATE TABLE IF NOT EXISTS `candidate` (
`candidate_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`roll_no` int(10) unsigned NOT NULL,
`candidate_name` varchar(255) DEFAULT NULL,
`batch_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`candidate_id`),
KEY `candidate_name` (`candidate_name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT;

我需要做的是将roll_no分配给特定批处理中的候选人。即每个batch_id的roll_no将从1开始。 *(不用说,每个批处理或batch_id有数千个候选者)*。 roll_no字段的值默认为0。

我尝试做的事情:

UPDATE candidate c, (SELECT @id := 0) serial
SET roll_no = (@id := @id + 1)

WHERE c.batch_id = 5
ORDER BY c.candidate_name ASC

导致:UPDATE 和 ORDER BY 的使用不正确如果我省略 ORDER BY 子句,它可以正常工作,但我需要根据候选人姓名的升序将 roll_no 分配给候选人有什么方法可以实现我正在尝试的目标......最重要的是,我清楚吗?提前感谢大家。

最佳答案

这行得通吗?

SET @id := 0;
UPDATE candidate c
SET roll_no = (@id := @id + 1)
WHERE batch_id = 5
ORDER BY candidate_name ASC;

关于mysql - UPDATE 表名, (SELECT @id := 0) dm SET sale_id = (@id := @id 1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17577396/

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