我有一个 mysql 表 T1,由两列 INT 组成,它们将 car_id 链接到 part_id。一个car_id可以有多个part_id,同一个part_id可以对应多个car_id。例如,
car_id part_id
1 1
1 2
1 8
2 3
3 4
4 2
4 6
...
10 1
10 2
...
20 1
20 2
20 8
要获取与 car_id = 1 关联的所有 part_id,我运行查询,
SELECT car_id, part_id FROM T1 WHERE car_id=1
并得到结果:
car_id part_id
1 1
1 2
1 8
现在,我想找到所有剩余的至少包含(例如 >= 2/3)与 car_id=1 关联的 part_id 的 car_id。(在这个例子中,我应该得到所有 car_ids 至少有 2 个 part_ids 1,2 和 8,如我的 SELECT 查询之后所示。所以,我应该得到 car_ids 1,10 和 20)。
我可以使用以下方法找到包含所有 part_ids 1、2 和 8 的 car_ids:
SELECT car_id, part_id
FROM T1
WHERE part_id = ALL (SELECT part_id FROM T1 WHERE car_id=1). The result is car_ids 1 and 20.
我可以使用以下方法找到包含任何值 1、2 和 8 的 car_id:
SELECT car_id, part_id
FROM T1
WHERE part_id = ANY (SELECT part_id FROM T1 WHERE car_id=1). The result is car_ids 1,4,10 and 20.
如何在 ANY 和 ALL 之间指定某个数字?