代码之家  ›  专栏  ›  技术社区  ›  Camille Colvray

对两列使用IN运算符

  •  3
  • Camille Colvray  · 技术社区  · 8 年前

    我不知道怎么用 IN 两列的运算符。

    以下是对一列的查询:

    select * 
    from Mouvement_Final T 
    where T.Comp_Id  in (select Comp_Id from Compte where Comp_Idcategorie='AOPT')
    

    我想在什么时候过滤 Comp_Idcategorie='AOPT' 对于两列 Comp_Id 以及 Comp_idcouleur .

    2 回复  |  直到 8 年前
        1
  •  5
  •   Gordon Linoff    8 年前

    仅使用 exists . 它概括得更好。对于您的代码:

    select T.* 
    from Mouvement_Final T 
    where exists (select Comp_Id
                  from Compte c
                  where c.Comp_Idcategorie = 'AOPT' and
                        c.Comp_Id = T.Comp_Id
                 );
    

    您应该能够看到这是如何推广到更多条件的。

        2
  •  2
  •   Radim Bača    8 年前

    您可以使用 JOIN 具有 distinct

    select distinct T.* 
    from Mouvement_Final T
    join Compte C on T.Comp_Id = C.Comp_Id and 
                     T.Comp_idcouleur = C.Comp_idcouleur and
                     C.Comp_Idcategorie = 'AOPT'