2013-07-08 49 views
1

我可以看到爲什麼這是有問題的,但似乎無法解決像這樣的修補程序在SO有..Mysql:同一張表上的子查詢更新?

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

謝謝!

+2

你到底想幹什麼?你想更新一行,還是*每行*? –

+0

同步人 – Strawberry

+0

檢查此問題:http://stackoverflow.com/q/3332026 –

回答

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; 
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; 

Link to Demo

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