1

SQLを学び始めたばかりです。OracleDBを使用しています。

empno、ename、job、mgr、hiredate、sal、comm、deptnoの列を持つテーブルemp。

各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)
4

2 に答える 2

0

あなたが正しくやろうとしていることを私が理解していれば、次のことがうまくいくはずです。

SELECT MIN(d.ename) as ename
  FROM emp d
  GROUP BY d.deptno
  ORDER BY ename asc

SQLフィドルはこちら

于 2013-03-13T21:10:54.947 に答える
0

それを行う別の方法

SELECT d.deptno, 
       (SELECT ename 
          FROM emp e 
         WHERE e.deptno = d.deptno AND ROWNUM <=1) ename
  FROM dep d 

SQLフィドル

于 2013-03-13T21:29:57.267 に答える