在没有交叉 sql 查询的情况下获取共同 ID
getting mutual id without intersect sql query
我需要一个 select 查询,以便根据输入
为 L_IDs 获取相互 R_ID
L_ID | R_ID|
-----|-----|
1 | 1 |
2 | 1 |
3 | 1 |
1 | 2 |
2 | 2 |
4 | 2 |
2 | 3 |
3 | 3 |
4 | 3 |
5 | 3 |
..
例如,如果我传递 1,2,3 :它 returns 1
SELECT R_ID FROM table WHERE L_ID in (1,2,3)
R_ID |
-----|
1 |
例如,如果我传递 2,3,4,5 :它 returns 3
SELECT R_ID FROM table WHERE L_ID in (4,2,3,5)
R_ID |
-----|
3 |
注意:所有L_ID的组合如(1,2,3)都是唯一的,有一个共同的R_ID
您可以使用 group by
和 having
。我认为这符合您的要求:
SELECT R_ID
FROM table
WHERE L_ID in (1, 2, 3)
GROUP BY R_ID
HAVING COUNT(*) = 3; -- this value is the number of matches
请注意,带有 1、2、3 和 4 的 R_ID
将匹配。如果这是不可取的,那么:
SELECT R_ID
FROM table
GROUP BY R_ID
HAVING SUM(L_ID IN (1, 2, 3)) = 3 AND
COUNT(*) = 3;
我需要一个 select 查询,以便根据输入
为 L_IDs 获取相互 R_IDL_ID | R_ID|
-----|-----|
1 | 1 |
2 | 1 |
3 | 1 |
1 | 2 |
2 | 2 |
4 | 2 |
2 | 3 |
3 | 3 |
4 | 3 |
5 | 3 |
..
例如,如果我传递 1,2,3 :它 returns 1
SELECT R_ID FROM table WHERE L_ID in (1,2,3)
R_ID |
-----|
1 |
例如,如果我传递 2,3,4,5 :它 returns 3
SELECT R_ID FROM table WHERE L_ID in (4,2,3,5)
R_ID |
-----|
3 |
注意:所有L_ID的组合如(1,2,3)都是唯一的,有一个共同的R_ID
您可以使用 group by
和 having
。我认为这符合您的要求:
SELECT R_ID
FROM table
WHERE L_ID in (1, 2, 3)
GROUP BY R_ID
HAVING COUNT(*) = 3; -- this value is the number of matches
请注意,带有 1、2、3 和 4 的 R_ID
将匹配。如果这是不可取的,那么:
SELECT R_ID
FROM table
GROUP BY R_ID
HAVING SUM(L_ID IN (1, 2, 3)) = 3 AND
COUNT(*) = 3;