1

我可以明白为什么这是有问题的,但似乎无法像这里的其他人一样解决这个问题。

我不想使用 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

谢谢!

4

3 回答 3

6

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

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;
于 2013-07-08T15:47:44.693 回答
1

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

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

链接到演示

于 2013-07-08T15:52:44.970 回答
0
    update tickets
    set ticket_number= (
       select (MAX(ticket_number)+1) from (
          select * from ticket
       ) as x)
    where ticket_id=12345;
于 2014-10-07T05:50:32.093 回答