PL \ SQL从列1中选择第一列,其中列2是唯一的
问题描述:
我刚开始学习SQL。我正在使用Oracle数据库。PL SQL从列1中选择第一列,其中列2是唯一的
表emp与列empno,ename,工作,mgr,hiredate,sal,comm,deptno。
我想从每个deptno的ename列中获取第一条记录,ename必须按asc排序。
下面的SQL工作:
Select ename
from (Select d.ename
From emp d
Where d.deptno = 10
Order by ename asc)
where rownum <= 1
Union
Select ename
from (Select d.ename
From emp d
Where d.deptno = 20
Order by ename asc)
where rownum <= 1
Union
Select ename
from (Select d.ename
From emp d
Where d.deptno = 30
Order by ename asc)
where rownum <= 1
Union
Select ename
from (Select d.ename
From emp d
Where d.deptno = 40
Order by ename asc)
where rownum <= 1
我想优化它,所以我不需要重写它,如果我添加一些记录DEPTNO列。
我SELECT
不同试过像
SELECT ename FROM emp WHERE (SELECT distinct deptno FROM emp)
答
如果我明白你正确地做什么,下面应该工作:
SELECT MIN(d.ename) as ename
FROM emp d
GROUP BY d.deptno
ORDER BY ename asc
答
另一种方式来做到这一点
SELECT d.deptno,
(SELECT ename
FROM emp e
WHERE e.deptno = d.deptno AND ROWNUM <=1) ename
FROM dep d
谢谢:)这正是我需要的。我遇到了问题,最后我忘了命令存在... – Keiishi 2013-03-13 21:16:57
太棒了!如果您有任何疑问,请告诉我。 – 2013-03-13 21:20:46