gpt4 book ai didi

MySql:同一张表上的硬匹配

转载 作者:行者123 更新时间:2023-11-29 04:23:15 25 4
gpt4 key购买 nike

我有一张包含商店订单产品的表格

+----------------------------+
| orders_id | products_model |
+----------------------------+
| 1000 | aa0000001 |
| 1000 | bb0000002 |
| 1000 | cc0000001 |
| 1001 | aa0000001 |
| 1002 | bb0000001 |
| 1003 | cc0000001 |
| 1004 | bb0000001 |
| 1004 | aa0000001 |
+----------------------------+

当然,每个订单都可以有一个或多个项目

我需要一个仅包含代码以 aa 或 bb(或两者)开头的项目的订单列表我不想列出包含代码以其他代码类型开头的项目的订单。

例子:

+-----------+
| orders_id |
+-----------+
| 1001 |
| 1002 |
| 1004 |
+-----------+

必须排除订单 1000,因为它在 'aa' 和 'bb' 旁边有一个 'cc' 项目必须排除订单 1003,因为它有一个“cc”项目

我开始尝试比较每个订单的匹配记录数和所有记录数......但我很快不得不停止......我是一个 sql 新手所以我迷失在嵌套查询的丛林中:)

你能帮帮我吗?

最佳答案

认为这可能是你需要的

SELECT DISTINCT orders_id FROM orders ord
LEFT JOIN (SELECT DISTINCT Orders_Id
FROM orders
WHERE products_model LIKE 'cc%' OR products_model LIKE 'dd%') ccDdItems
ON ccDdItems.Orders_id = ord.Orders_id
WHERE ccDdItems.Orders_Id IS NULL

正如 LittleBobbyTables 指出的那样,如果您还有 'ee'、'ff' 等,您可能希望将内部查询替换为 NOT LIKE 'aa%' AND NOT LIKE 'bb%'

关于MySql:同一张表上的硬匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17453370/

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