我需要阻止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。
答案 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;