SQL通过具有此值的不同ID从列中选择值

时间:2017-06-21 12:54:06

标签: mysql select join group-by self-join

让我解释一下我的问题: 我有一个表格,其中包含product_id和相应的calender_week_id,用于可能的交货日历周。每种产品都可以在几周内交付:

| product_id | calender_week_id |    
| 1          | 1                |    
| 1          | 2                |    
| 2          | 1                |    
| 3          | 1                |    
| 3          | 2                |

...

我现在想要的是与一组product_id(一个订单)匹配的calender_week_id。让我们说我有product_id IN(1,2,3)。现在我需要一个SQL语句,它为我提供了与所有给定product_id匹配的所有calender_week_id - 所以在这种情况下= 1,因为calender_week_id = 1是product_id = 1,product_id = 2的相应值product_id = 3。

我希望你能理解我的问题并帮助我!

1 个答案:

答案 0 :(得分:1)

您需要以下查询:

SELECT calendar_week_id
FROM mytable
WHERE product_id IN (1,2,3)
GROUP BY calendar_week_id
HAVING COUNT(DISTINCT product_id) = 3;

查询返回与{em> calendar_week_id子句中指定的所有不同 product_id值相关的WHERE值。

Demo here