MySQL UPDATE WHERE IN分别为每个列出的值?

Tom*_*Tom 0 mysql database join where-clause

我有以下类型的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)
Run Code Online (Sandbox Code Playgroud)

基本上,两个表(car&photo)是相关的.$ ids中的列表包含唯一的照片ID,例如(34,87,98,12).通过查询,我将该列表中每张照片的状态设置为表格中的"1" photo,同时car在手边的桌子中增加照片计数.

它有效,但有一个障碍:因为列表可以包含多个与同一辆汽车相关的照片ID,所以照片计数只会增加一次.如果列表中有10张照片与同一辆车相关联,则photo_count将变为1 ....而我想将其增加到10.

有没有办法通过连接单独为每张照片进行增量,而不是MySQL为我过度思考?

我希望上述内容有道理.谢谢.

chr*_*ris 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);
Run Code Online (Sandbox Code Playgroud)