代码之家  ›  专栏  ›  技术社区  ›  Ahmed Mohammed

mysql将select结果与一组值进行比较

  •  0
  • Ahmed Mohammed  · 技术社区  · 5 年前

    我有两张桌子, 一个包含人名id和人名名

    person_id------person_name
    --------------------------
    --------------------------
    
    relative_id-----person_id------relative_name
    --------------------------------------------
    --------------------------------------------
    --------------------------------------------
    

    enter image description here

    1 回复  |  直到 5 年前
        1
  •  0
  •   Yogesh Sharma    5 年前

    加入和聚合:

    select p.person_name
    from person p inner join
         person_relative pr
         on pr.person_id = p.person_id
    where pr.relative_name in ('adam', 'carl', 'dave')
    group by p.person_name
    having count(*) = 3;
    

    如果一个人有重复亲属,则使用 distinct 里面 count() :

    having count(distinct pr.relative_name) = 3;
    

    在问题之后进行编辑

    select p.person_name
    from person p inner join
         person_relative pr
         on pr.person_id = p.person_id
    group by p.person_name
    having sum( pr.relative_name not in ('adam', 'carl', 'dave') ) = 0;