在没有交叉 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 byhaving。我认为这符合您的要求:

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;