SQL查询有两个不同的ID

时间:2016-06-10 23:17:31

标签: mysql sql count sql-update subquery

我需要阻止photo_order字段超出与文章相关的照片数量。我有这个,但它不起作用。表名已被使用过两次,可能是错误的。

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 个答案:

答案 0 :(得分:1)

我认为这是你得到的错误:

  

您无法指定目标表&#39; articles_photos&#39;用于在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;