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)