【问题标题】:How can change only 2 rows in update tables如何仅更改更新表中的 2 行
【发布时间】:2015-08-10 11:00:07
【问题描述】:

我有产品图片表。我的桌子上每个产品图片都有主图片列,同时只有一个图片应该是主图片,其他的不是。

我写了这个 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)

如果我的产品有两张图片没问题,但如果产品有三张或更多图片,当此查询执行时,一张图片 mainpicture 等于零,其他 mainpicture 变为一张。

如果有两个或多个图片,我希望选择的行为零,一个随机行设置为 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))

【问题讨论】:

  • 如果您在查询时产品只有一张图片怎么办?

标签: mysql mysqli sql-update


【解决方案1】:

您可以使用IF() 为特定产品 ID 更新每张图片:

UPDATE product_picture
SET mainpicture = IF(id = 16, 1, 0)
WHERE productid = 2

这会将 id 为 16 的图片设置为产品 2 的主图片。

【讨论】:

  • 我们希望将 id 16 mainpicture 更改为零,其他之一更改为 1,但一点也不
  • @farzad 这没有任何意义;为什么不找一张你想设置为主图的随机图片并在上面的查询中使用呢?
  • 你帮了我一点忙。谢谢我解决了这个问题。我现在编辑帖子
猜你喜欢
  • 2021-12-12
  • 2021-09-11
  • 2012-04-04
  • 1970-01-01
  • 2017-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多