2016-06-10 127 views
-1

我需要防止字段超出與文章關聯的照片數量。我有這個,但它不起作用。表名已被使用過兩次,可能是錯誤的。帶兩個不同ID的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;