是否基于mysql中状态列的最小编号更新列?
我想用状态=8更新数字2是否基于mysql中状态列的最小编号更新列?,mysql,sql,Mysql,Sql,我想用状态=8更新数字2 UPDATE tqueue SET status = '8' WHERE (SELECT MIN(number) FROM tqueue WHERE STATUS IN ('4') AND get_ticket >= CURDATE( ) AND get_ticket < DATE_ADD( CURDATE(), INTERVAL 1 DAY) GROUP BY serv
UPDATE tqueue
SET status = '8'
WHERE (SELECT MIN(number)
FROM tqueue
WHERE STATUS IN ('4')
AND get_ticket >= CURDATE( )
AND get_ticket < DATE_ADD( CURDATE(), INTERVAL 1 DAY)
GROUP BY service)
您是否希望将状态为8的最小编号更新为状态为4 试试这个:
SELECT @mynumber:=number FROM tqueue
WHERE STATUS = '4'
AND get_ticket >= CURDATE( )
AND get_ticket < DATE_ADD( CURDATE() , INTERVAL 1 DAY )
GROUP BY service
order by number asc
limit 0,1 ;
UPDATE tqueue SET status = '8' where number = @mynumber ;
此外,您还可以使用临时表进行更新自引用:
CREATE TEMPORARY TABLE mytbl_numbers AS
SELECT number FROM tqueue
WHERE STATUS = '4'
AND get_ticket >= CURDATE( )
AND get_ticket < DATE_ADD( CURDATE() , INTERVAL 1 DAY )
GROUP BY service
order by number asc
limit 0,1 ;
UPDATE tqueue SET status = '8' where number in (SELECT * FROM mytbl_numbers) ;
更多有用的答案可以在&&…更新tqueue set status=8,其中number=2。请解释这是否解决了您的问题,或者为什么不以一致的wya更新您的问题。。您引用的列和条件不在您的示例和解释中..当我每次更新数据时,状态为4的min编号将更改为状态8,不仅是编号2,它的错误为1093-您不能为我的错误指定从子句中更新的目标表'tqueue',在更新和删除中,目标表和源表不能使用一个表。所以我改变了代码,它解决了吗?
CREATE TEMPORARY TABLE mytbl_numbers AS
SELECT number FROM tqueue
WHERE STATUS = '4'
AND get_ticket >= CURDATE( )
AND get_ticket < DATE_ADD( CURDATE() , INTERVAL 1 DAY )
GROUP BY service
order by number asc
limit 0,1 ;
UPDATE tqueue SET status = '8' where number in (SELECT * FROM mytbl_numbers) ;