是否基于mysql中状态列的最小编号更新列?

是否基于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

我想用状态=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 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) ;