首页 >数据库 >mysql教程 >如何使用 SQL 选择包含所有指定体育项目的商品?

如何使用 SQL 选择包含所有指定体育项目的商品?

DDD
DDD原创
2024-12-18 04:46:10280浏览

How to Select Offers Containing All Specified Sports Using SQL?

SQL where joined set 必须包含所有值,但可能包含更多值

在关系数据库管理系统(RDBMS)中,经常需要根据特定条件检索数据。在此特定场景中,任务是从 Offers 表中选择包含给定数组中指定的所有体育项目的行,同时可能包含其他体育项目。

要实现此结果,可以使用以下 SQL 查询利用:

SELECT o.*
FROM   sports        s
JOIN   offers_sports os ON os.sport_id = s.id
JOIN   offers        o  ON os.offer_id = o.id
WHERE  s.name IN ('Bodyboarding', 'Surfing')
GROUP  BY o.id
HAVING count(*) = 2;

分解查询:

  • JOIN 语句在 sports、offers_sports 和优惠表。
  • WHERE 子句根据指定的运动名称过滤体育表。
  • GROUP BY 语句按优惠表中的 Offer_id 列对结果进行分组。
  • HAVING 子句检查每个组是否恰好包含两个唯一的运动名称。

总而言之,此 SQL 查询检索满足指定标准的优惠,确保提供所有必需的运动项目,而不排除包含其他运动项目的优惠。

以上是如何使用 SQL 选择包含所有指定体育项目的商品?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn