2016-04-25 6 views
0

Im tring, чтобы обновить значение MIN для столбца, но не может заставить мой синтаксис работать. я получаю ошибку
# 1093 - Вы не можете указать целевую таблицу «turcare_turutstyr» для обновления в ЕКОМUPDATE и MIN SQL Query

Мой запрос

UPDATE tableName 
SET solgt = true 
WHERE produktid = (SELECT min(produktid) FROM tableName 
       WHERE artnr = '1234' 
       AND solgt = false) 

Где я делаю неправильно?

+2

'UPDATE TABLENAME SET SOLGT = истина WHERE produktid IN ( выберите * from ()ВЫБОР мин (produktid) ОТ TABLENAME ГДЕ artnr = '1234' И SOLGT = ложно ) ТМП ) ' –

+0

Is "TABLENAME"' turcare_turutstyr'? Это на самом деле взгляд? –

+0

СПАСИБО ВАМ ТАК. Я не могу поверить, что я обходил это неправильно. – Eyrik

ответ

1

MySQL не позволяет вам напрямую использовать одну и ту же таблицу дважды в запросе update или delete. Ну, да. Один метод использует join:

UPDATE tableName t JOIN 
     (SELECT min(produktid) as produktid 
     FROM tableName 
     WHERE artnr = '1234' AND solgt = false 
    ) tt 
     ON t.produktid = tt.produktid 
    SET solgt = true; 
1

Может быть вашим, где положение возврата более 1 строки

UPDATE tableName 
    SET solgt = true 
    WHERE produktid in (SELECT min(produktid) FROM tableName 
        WHERE artnr = '1234' 
        AND solgt = false) 
0

Благодаря juergen d ив решил его

UPDATE turcare_turutstyr 
SET solgt = true 
WHERE produktid IN (select * from (SELECT min(produktid) 
           FROM turcare_turutstyr 
           WHERE artnr = '1234' 
           AND solgt = false) 
       TMP)