2016-06-10 2 views
-1

Мне нужно предотвратить поле из-за превышения количества фотографий, связанных со статьей. У меня это есть, но это не работает. Имя таблицы использовалось два раза, и это, вероятно, неверно.SQL-запрос с двумя разными идентификаторами

UPDATE articles_photos SET photo_order = 
    IF(photo_order < (SELECT COUNT(id) FROM articles_photos 
     WHERE article_id = 12), photo_order + 1, 1) WHERE id = 26 

Как я могу исправить вышеуказанный запрос? Моя база данных - это MySQL.

ответ

1

Я полагаю, что это ошибка, вы получаете:

Вы не можете указать целевую таблицу «articles_photos» для обновления в FROM п

Вот одна работа вокруг с помощью cross join с подзапрос:

update articles_photos ap 
cross join (select count(id) cnt from articles_photos where article_id = 12) temp 
set ap.photo_order = if(ap.photo_order<temp.cnt,ap.photo_order+1,1) 
where ap.id = 26; 
Смежные вопросы