gpt4 book ai didi

mysql - 在 Mysql 中,选择与另一个值的每个实例一起出现的不同值

转载 作者:行者123 更新时间:2023-11-29 07:34:41 25 4
gpt4 key购买 nike

我有一张表,其中包含供应商 ID (sid)、零件 ID (pid) 和工作 ID (jid)。每个都有很多实例,但我需要找到每个部分都出现的供应商。

这是一个示例表:

+------+------+------+------+
| sid | pid | jid | qty |
+------+------+------+------+
| S1 | P1 | J1 | 200 |
| S1 | P1 | J4 | 700 |
| S2 | P3 | J1 | 400 |
| S2 | P3 | J2 | 200 |
| S2 | P3 | J3 | 200 |
| S2 | P3 | J4 | 500 |
| S2 | P3 | J5 | 600 |
| S2 | P3 | J6 | 400 |
| S2 | P3 | J7 | 800 |
| S3 | P3 | J1 | 200 |
| S3 | P4 | J2 | 500 |
| S4 | P6 | J3 | 300 |
| S4 | P6 | J7 | 300 |
| S5 | P2 | J2 | 200 |
| S5 | P2 | J4 | 100 |
| S5 | P5 | J5 | 500 |
| S5 | P5 | J7 | 100 |
| S5 | P6 | J2 | 200 |
| S5 | P1 | J4 | 100 |
| S5 | P3 | J4 | 200 |
| S5 | P4 | J4 | 800 |
| S5 | P5 | J4 | 400 |
| S5 | P6 | J4 | 500 |
+------+------+------+------+

所以这应该返回

+------+
| sid |
+------+
| S5 |
+------+

因为 S5 是唯一出现在所有 6 个零件 (pid) 中的供应商 ID。我想我会使用子选择,但不知道如何去做。

最佳答案

试试这个:

SELECT sid
FROM mytable
GROUP BY sid
HAVING COUNT(DISTINCT pid) = (SELECT COUNT(DISTINCT pid) FROM mytable)

子查询:

SELECT COUNT(DISTINCT pid) FROM mytable

返回表中存在的不同零件号的数量。 sid 及其 HAVING 子句的主要查询组仅选择包含所有现有部件号的 sid 组。

Demo here

关于mysql - 在 Mysql 中,选择与另一个值的每个实例一起出现的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49527511/

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