2017-10-18 48 views
0
SELECT DISTINCT E.empno, E.ename,E.sal,E1.empno,E1.ename,E1.sal 
FROM Emp E , Emp E1 WHERE E1.sal = E.sal AND 
E.empno <> E1.empno 
Group by E.empno,E.ename,E.sal,E1.empno,E1.ename,E1.sal; 

即使我使用DISTINCT我仍然有這樣的事情多表如何DISTINCT查詢

empno ename sal empno ename sal 
1  a 123 2  b  123 
2  b 123 1  a  123 

,我只想要一次顯示它...

+1

那結果是DISTINCT它沒有重複的行。 – jarlh

+0

今天提示:切換到現代,明確的'JOIN'語法。易於編寫(沒有錯誤),更易於閱讀(和維護),並且在需要時更容易轉換爲外部聯接。 – jarlh

+0

添加樣本數據以及預期結果。 – jarlh

回答

1

首先,使用適當的,明確的,JOIN語法。

其次,解決的方法就是使用<

SELECT E.empno, E.ename, E.sal, E1.empno, E1.ename, E1.sal 
FROM Emp E JOIN 
    Emp E1 
    ON E1.sal = E.sal AND E.empno < E1.empno ; 

您可能會發現更容易只得到名稱和ID在一個列,如:

select e.sal, group_concat(e.empno order by e.empno) as empnos, 
     group_concat(e.ename order by e.empno) as empnames 
from emp e 
group by e.sal 
having count(*) > 1;