gpt4 book ai didi

mysql - 获取相关记录没有任何其他关系的所有记录

转载 作者:行者123 更新时间:2023-11-29 12:17:16 24 4
gpt4 key购买 nike

我有一个包含产品的表,其中有许多变体变体有零到多个图像

+---------+
| Product |
+---------+
1|
|
|1..n
+---------+
| Variant |
+---------+
1|
|
|0..n
+---------+
| Image |
+---------+

我需要更新所有产品,其中所有变体都没有任何图像。我可以使用以下查询找到所有产品,其中一些变体没有图像:

SELECT
DISTINCT `p`.*
FROM `sylius_product` AS `p`
JOIN `sylius_product_variant` AS `v` ON `v`.`product_id` = `p`.`id`
LEFT JOIN `sylius_product_variant_image` AS `i` ON `i`.`variant_id` = `v`.`id`
WHERE `i`.`id` IS NULL

但如果我没记错的话,具有两种变体的产品(一种有图像,一种没有图像)将包含在结果集中。

如何构造我的连接/where 以便我只能检索所有变体都没有任何图像产品

最佳答案

您可以通过加入和聚合来做到这一点:

select p.*
from sylius_product p join
sylius_product_variant v
on v.product_id = p.id left join
sylius_product_variant_image i
on i.variant_id = v.id
group by p.id
having max(i.variant_id) is null;

如果所有变体都没有图像,则产品上根本没有图像。 having 条件也可以写成:

having count(i.variant_id) = 0

关于mysql - 获取相关记录没有任何其他关系的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29608822/

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