我有这样的表:
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
但我的问题是如何批量运行?所以我可以立即更新所有内容。
答案 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