2014-03-04 89 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

相關問題