car_id を part_id にリンクする INT の 2 つの列で構成される mysql テーブル T1 があります。1 つの 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
ここで、car_id=1 に関連付けられた part_id を少なくとも (>= 2/3) 含む残りの car_id をすべて見つけたいと考えています。(この例では、SELECT クエリの後に表示されるように、part_ids 1、2、および 8 のうち少なくとも 2 つを持つすべての car_ids を取得する必要があります。したがって、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_ids を見つけることができます。
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 の間の数値を指定するにはどうすればよいですか?