Manish Pradhan
Manish Pradhan

Reputation: 1188

Update Statement with Select sub select

How can I make this work - gives me #1093 - You can't specify target table 'Orders' for update in FROM clause

Update Orders set flag = 0 where orders_id = (select orders_id from orders ORDER BY orders_id DESC LIMIT 1)

Upvotes: 0

Views: 157

Answers (2)

John Woo
John Woo

Reputation: 263723

You need to wrap it in a subquery (creating a temporary table)

Update Orders 
set flag = 0 
where orders_id = 
    (
        SELECT x.orders_id
        FROM
        (
            select orders_id 
            from orders 
            ORDER BY orders_id DESC 
            LIMIT 1
        ) x
    )

or

Update Orders 
set flag = 0 
where orders_id = 
    (
        SELECT x.orders_id
        FROM
        (
            select MAX(orders_id) orders_id 
            from orders 
        ) x
    )

Upvotes: 1

Doon
Doon

Reputation: 20232

it looks like you are trying up update the last order in the table? try

Update Orders set flag = 0 ORDER BY orders_id DESC LIMIT 1; 

Mysql doesn't support updating a table while using it in a subquery..

Upvotes: 0

Related Questions