我有以下类型的SQL:
UPDATE photo AS f
LEFT JOIN car AS c
ON f.car_id=c.car_id
SET f.photo_status=1
, c.photo_count=c.photo_count+1
WHERE f.photo_id IN ($ids)
基本上,两个表格(car
& photo
)是相关的。 $ ids中的列表包含唯一的照片ID,例如(34,87,98,12)。通过查询,我将该列表中每张照片的状态设置为photo
表中的“1”,同时在car
表格中为手头的汽车增加照片计数。
它有效,但有一个障碍:因为列表可以包含多个与同一辆汽车相关的照片ID,所以照片计数只会增加一次。如果列表中有10张照片与同一辆车相关联,则photo_count将变为1 ....而我想将其增加到10张。
有没有办法通过连接单独为每张照片进行增量,而不是MySQL为我过度思考?
我希望上述内容有道理。感谢。
答案 0 :(得分:6)
您可以使用两个查询执行此操作:
UPDATE car
SET photo_count = photo_count + (
SELECT count(*)
FROM photos
WHERE photo.car_id = car.car_id
AND photo_status = 0
AND photo_id IN ($ids)
);
UPDATE photo
SET photo_status = 1
WHERE photo_id IN ($ids);
答案 1 :(得分:1)
我认为你应该做的事情:
分两步更新表格。首先在照片表中将状态设置为1,然后将计数(通过使用group by和count(...))更新到car table。
修改强> 撤回'天真的方法',将无法正常运行OP!