更新表列mysql中的特定值

时间:2014-10-24 11:35:46

标签: mysql

我有这样的表:

id business_id path     photo
 1          11 1.jpg        0
 2          11 2.jpg        0
 3          15 1.jpg        0
 4          15 3.jpg        0
 5          15 4.jpg        0
 6          21 scan1.jpg    0
 7          21 scan2.jpg    0
 8          22 1.jpg        1

...

我想更新表格,以便每个商家可以在上面的业务情景11中说出。其中一条路径应该将照片设置为1.

如果照片已经设置为1(例如business_id = 22),则不应更改。

我认为以下查询一次只适用于1 business_id

Update business 
set photo = 1 
where id  = 11 limit 1

但我的问题是如何批量运行?所以我可以立即更新所有内容。

2 个答案:

答案 0 :(得分:1)

您可以尝试此查询:

UPDATE business SET photo = 1 WHERE id IN
   (SELECT MIN(id) , MAX(photo) FROM business
    GROUP BY business_id HAVING max(photo) = 0)

其他信息:下一个查询会为您提供商家没有任何照片的行列表。这个问题是我答案的初始点。

SELECT business_id , MAX(photo) FROM business
GROUP BY business_id HAVING max(photo) = 0

答案 1 :(得分:1)

您可以使用以下查询更新您的表格,它会获得所有照片设置为0的每个business_id的最大值,并使用您选择的联接将按business_id更新单个记录photo = 1

update business b
join (select max(id) id, business_id
from business 
group by business_id
having sum(photo = 0) = count(*)) t
on(b.id = t.id)
set b.photo = 1

DEMO