我有产品图片表。我的桌子上有每张产品图片的主图片列,同时只有一张图片应该是主图片而另一张图片不是。
我写这个mysql查询:
update product_picture a1,product_picture a2
set a1.mainpicture=0, a2.mainpicture=1
where (a1.id=16 and productid=2)
and (a2.id!=16 and productid=2)
如果我的产品有两张图片则没有问题,但如果此查询执行一张图片主图片等于零而其他主图片更改为一张,则产品有三张或更多图片。
我希望选中的行为零,如果有两个或多个图片,则将一个随机行设置为1.
我不能对此查询使用限制。
我解决了这个问题并把它放在这里也许这对其他人有好处
回答:
update product_picture a1,product_picture a2
set a1.mainpicture=0,a2.mainpicture=1
where (a1.id=16 and a1.productid=2)
and (a2.id =(SELECT * FROM ( SELECT id
FROM `product_picture`
WHERE `id` != 16
AND `productid`=2
ORDER BY RAND() LIMIT 1 ) cl1))
答案 0 :(得分:0)
您可以使用IF()
更新特定产品ID的每张图片:
UPDATE product_picture
SET mainpicture = IF(id = 16, 1, 0)
WHERE productid = 2
这将设置id为16的图片作为产品2的主图片。