2014-03-04 87 views
4

我需要从下表中获取具有相同列值的行,我尝试了以下方法,但它只给出了单行。MySQL选择具有相同列值的行

select * 
from employee e 
group by e.empsalary 
having count(e.empsalary) > 1 

表员工

enter image description here

请给我建议的方法。

+0

'选择empsalary'并把它嵌套查询里面像'WHERE empsalary IN(SELECT ... empsalary)' – zerkms

+0

您可以使用自连接。 –

回答

8

您应该能够通过加入表本身来实现:

SELECT 
    a.* 
FROM 
    employee a 
    JOIN employee b 
     ON a.empsalary = b.empsalary 
     AND a.empid != b.empid 
+0

演示为你 - http://sqlfiddle.com/#!2/d75d9/1 – Phil

+0

最后!这是几个世纪以来一直在寻找的东西!谢谢:D –

3

使用一个内连接来加入你的查询发布。

select A.* from employee A 
inner join (
    select empsalary 
    from employee 
    group by empsalary 
    having count(*) > 1 
) B ON A.empsalary = B.empsalary 
+0

演示为你 - http://sqlfiddle.com/#!2/d75d9/5 – Phil

2

像这样的事情也许

SELECT * FROM employee a 
WHERE EXISTS (
    SELECT 1 FROM employee b 
    WHERE a.empsalary = b.empsalary 
    AND a.empid <> b.empid 
); 

演示 - 只要你想http://sqlfiddle.com/#!2/d75d9/4

2
select * from employee where empsalary IN(select empsalary from employee group by empsalary having count(empsalary) > 1) 

尝试This.It给2行。

演示: http://sqlfiddle.com/#!2/d75d9/6

相关问题