繁体   English   中英

MySQL的:子查询更新在同一张桌子?

[英]Mysql: Sub-query update on same table?

我可以看到为什么这会有问题,但是似乎无法像其他人一样解决此问题。

我不想使用sub_query增加票证号。 无法使用auto_inc,因为已经具有auto_inc'ing主键。

这是我想做的:

UPDATE tickets SET tickets.ticket_number=(
    SELECT (MAX(ticket_number)+1) FROM tickets
) WHERE ticket_id=12345;

给我: You can't specify target table 'tickets' for update in FROM clause

谢谢!

如果我错了,请纠正我,但这是您想要实现的结果吗?:

UPDATE tickets SET tickets.ticket_number=(
   SELECT max_ticket FROM (
   SELECT (MAX(ticket_number)+1) AS max_ticket FROM tickets ) AS sub_table) 
WHERE ticket_id=12345;

我以前遇到过。 在mySQL中,当尝试使用同一表中的值更新表时,必须创建另一个抽象层。

UPDATE tickets SET ticket_number=(
  select t from (  
  SELECT (MAX(ticket_number)+1) t FROM tickets t1) as t2
) WHERE ticket_id=12345;

链接到演示

    update tickets
    set ticket_number= (
       select (MAX(ticket_number)+1) from (
          select * from ticket
       ) as x)
    where ticket_id=12345;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM