gpt4 book ai didi

mysql - 查询以检查分组行是否具有值 1

转载 作者:行者123 更新时间:2023-11-29 10:25:21 24 4
gpt4 key购买 nike

假设我有下表“产品”

id |title|images_missing
13 |shoes| 0
14 |shirt| 0

和另一个表“变体”

id|product_id|color|size|image
1 | 13|red |M |0
2 | 13|red |XL |1
3 | 13|green|M |0
3 | 13|green|S |0

其中每个产品可以有多种变体(变体由颜色+尺寸定义)。

我需要一个查询来检查每种颜色是否至少有一种具有图像的变体,以及是否至少有一种颜色没有图像(在本例中为绿色),第一个表中的产品行需要获取缺失图像的值为 1。

你能帮我解决这个问题吗?

编辑:

为了让事情变得更清楚一点,我的目标是更新产品表并将字段“images_missing”设置为 1(= 至少一种颜色根本没有图像)或 0(= 每种颜色至少有一种变体,图像 = 1)

这意味着:

  • 获取product_id = 13的所有变体
  • 检查是否至少有一个 color=red 的变体具有 image = 1
  • 检查是否至少有一个 color=green 的变体具有 image = 1

=>

  • 如果 color=red 的任何变体的 image = 1,则更新 ID 为 13 的产品,并设置missing_images = 1

或者

  • 如果 color=green 的任何变体的 image = 1,则更新 ID 为 13 的产品,并设置missing_images = 1

最佳答案

您可以计算图像的颜色数量和总体数量。这提供了一个表达式来确定图像是否缺少任何颜色:

select p.*,
coalesce(v.images_missing, 0) as images_missing
from products p left join
(select product_id, 1 as images_missing
from variations v
group by product_id
having count(distinct color) <> count(distinct case when image = 1 then color end)
) v
on p.id = v.product_id;

关于mysql - 查询以检查分组行是否具有值 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48420855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com