【问题标题】:Selecting rows where some columns are same but others are different选择某些列相同但其他列不同的行
【发布时间】:2021-12-17 21:12:34
【问题描述】:

我有一个数据集设置如下:

Name Age Job Start End
Joe 20 Plumber 01/20 08/20
Joe 20 Joiner 08/20 09/21
Kevin 28 Plumber 07/20 08/20
Kevin 28 Plumber 08/20 09/21
Michael 25 Plumber 01/20 11/20
Michael 25 Joiner 11/20 07/21

我正在尝试获取名称和年龄相同但工作不同的所有行。输出数据集应如下所示:

Name Age Job Start End
Joe 20 Plumber 01/20 08/20
Joe 20 Joiner 08/20 09/21
Michael 25 Plumber 01/20 11/20
Michael 25 Joiner 11/20 07/21

有人能帮帮我吗?

【问题讨论】:

    标签: sql exists


    【解决方案1】:

    您可以检查是否有重复的(姓名、年龄)对 EXISTS 但有不同的工作:

    SELECT *
    FROM t AS t1
    WHERE EXISTS (
        SELECT *
        FROM t AS t2
        WHERE t2.name = t1.name
        AND t2.age = t1.age
        AND t2.job <> t1.job
    )
    

    【讨论】:

    • 工作完美-谢谢!
    【解决方案2】:
    SELECT C.*
      FROM YOUR_TABLE AS C
      JOIN YOUR_TABLE AS C2 ON C.Name=C2.Name AND C.Age=C2.Age AND C.Job<>C2.Job
    

    【讨论】:

    • 您是对的,但对于当前提出问题的用户和未来有类似问题的用户来说,纯代码的答案往往质量低下。对您的解决方案的解释为您的答案增加了重要价值。 (无论如何+1,只是为了正确。)
    猜你喜欢
    • 2020-02-10
    • 2012-01-23
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多