代码之家  ›  专栏  ›  技术社区  ›  SnG

如何获取具有不同列值的SQL条目

sql
  •  1
  • SnG  · 技术社区  · 6 年前

    我有一个用例,其中我有一个表,比如:

    key  | attribute |
    key1 | x | 
    key1 | y |
    key2 | z |
    key2 | z |
    

    有没有一种方法可以在这个查询中找到所有具有多个唯一属性的键?对于这个例子,我只想返回key1,因为它有属性x和y,x和y是不同的,其中key 2只有一个唯一的属性。

    1 回复  |  直到 6 年前
        1
  •  4
  •   Gordon Linoff    6 年前

    对。只使用 group by having :

    select key
    from t
    group by key
    having min(attribute) <> max(attribute);
    

    如果您想要详细的键/属性对,那么我建议您 exists :

    select t.*
    from t
    where exists (select 1
                  from t t2
                  where t2.key = t.key and t2.attribute <> t.attribute
                 );