1

これが問題である理由はわかりますが、ここにいる他の人が持っているように修正を行うことができないようです..

sub_query を使用してチケット番号を増やしたくありません。auto_inc'ing の主キーが既にあるため、auto_inc を使用できません。

これが私がやりたいことです:

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 に答える