use*_*356 2 sql duplicates oracle11g
如何根据单个列找出重复的行.我在oracle中有一个表,其中包含下面给出的数据,它有重复数据.我正在尝试选择并查看具有重复员工ID的所有行,如下所述
EMP表:
EmpId Fname Lname Mname Jobcode Status exp_date
1 Mike Jordan A IT W 12/2014
1 Mike Jordan A IT A 12/2014
2 Angela ruth C sales P 12/2015
2 Angela ruth C IT W 12/2015
3 Kelly Mike B sales W 12/2015
Run Code Online (Sandbox Code Playgroud)
从上表我想要选择所有重复empid的行,如下所示
EmpId Fname Lname Mname Jobcode Status exp_date
1 Mike Jordan A IT W 12/2014
1 Mike Jordan A IT A 12/2014
2 Angela ruth C sales P 12/2015
2 Angela ruth C IT W 12/2015
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?谢谢!
SELECT a.*
FROM TableName a
INNER JOIN
(
SELECT EmpID
FROM TableName
GROUP BY EmpID
HAVING COUNT(*) > 1
) b ON a.EmpID = b.EmpID
Run Code Online (Sandbox Code Playgroud)
另一种方式,虽然我更喜欢上面,但是使用IN
SELECT a.*
FROM TableName a
WHERE EmpId IN
(
SELECT EmpId
FROM TableName
GROUP BY EmpId
HAVING COUNT(*) > 1
)
Run Code Online (Sandbox Code Playgroud)