gpt4 book ai didi

mysql - 如何在两个或多个连接表中获得重复结果?

转载 作者:行者123 更新时间:2023-11-29 00:53:59 25 4
gpt4 key购买 nike

我有两个表:

  1. 订单(id);
  2. order_items(id, order_id, item_id, quantity)

假设我已经选择了包含 3 件不同商品(A - 1 件、B - 2 件和 C - 1 件)的订单 X。

我需要获取所有具有相同商品和完全相同商品数量的订单(在本例中:A - 1 件,B - 2 件和 C - 1 件,不多也不少 :)),不包括订单 X。

我转储了一些测试表,所以,我希望,因为你会更容易理解我想要得到的东西:) http://nopaste.info/44eb93ae3d.html

让我们假设订单 X = 1,所以期望的输出将只是订单 2,因为订单 3 只有一个项目而订单 4 与 #1 有相同的项目,但它也多了一个项目,所以它不好:)

最佳答案

统计order_items表中每个订单的相同出现次数,然后与搜索到的订单的商品数进行比较:

SELECT i2.order_id
FROM order_items i1
RIGHT OUTER JOIN order_items i2
ON i2.item_id = i1.item_id
AND i2.quantity = i1.quantity
AND i1.order_id = 1
WHERE i2.order_id != 1
GROUP BY i2.order_id
HAVING COUNT(i1.order_id) = COUNT(*)
AND COUNT(i1.order_id) = (SELECT COUNT(*) FROM order_items WHERE order_id = 1)

请注意,此查询假定 (order_id, item_id)order_items 表的键。

I have made a sample test here.

关于mysql - 如何在两个或多个连接表中获得重复结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6994086/

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