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,我仍然有类似的东西

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


我只想展示一次...

最佳答案

首先,使用正确的显式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;

关于mysql - 如何区分多表查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46811854/

10-16 15:26