选择某些列相同但其他列不同的行
Selecting rows where some columns are same but others are different
我有一个数据集设置如下:
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
有人能帮帮我吗?
您可以检查是否有重复的(姓名、年龄)对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
)
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
我有一个数据集设置如下:
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 |
有人能帮帮我吗?
您可以检查是否有重复的(姓名、年龄)对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
)
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