我在我的数据库如下表:UPDATE表名,(SELECT @id:= 0)DM SET sale_id =(@id:= @id 1)
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分配给特定批次中的候选人。即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分配给考生他们的名字的升序 有没有什么办法可以实现我正在尝试的......最重要的是,我清楚了吗? 提前感谢你。
对不起,它没有工作! –