【问题标题】:getting mutual id without intersect sql query在没有相交sql查询的情况下获取相互ID
【发布时间】:2018-01-31 11:48:22
【问题描述】:

我需要一个选择查询来根据输入获取 L_ID 的相互 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 :它返回 1

SELECT R_ID FROM table WHERE L_ID in (1,2,3)

R_ID |   
-----|  
 1   |

例如,如果我通过 2,3,4,5 :它返回 3

SELECT R_ID FROM table WHERE L_ID in (4,2,3,5)

R_ID |   
-----|  
 3   |

注意:所有 L_ID 的组合如 (1,2,3) 都是唯一的,具有一个共同的 R_ID

【问题讨论】:

    标签: mysql sql intersection


    【解决方案1】:

    您可以使用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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-12
      • 2020-02-01
      • 2015-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-05
      • 1970-01-01
      相关资源
      最近更新 更多