(一)from 表1 join 表2 on(連接限制條件)
select ename, sal from emp
join (select max(sal), deptno from emp group by deptno ) t
on (emp.sal = t.max(sal) and emp.deptno = t.deptno); //顯示每個部門工資最高的人的姓名和工資
注: 兩個表不一定要有相同的屬性才能連接
例:select ename, dname, sal, salgrade from emp e
join dept d on (e.deptno = d.deptno) //僱員與部員連接 通過 deptno
join salgrade s on(e.sal between s.losal and s.hisal) ; //工資等級表與僱員表的連接,通過僱員的工資在等級表中比較
遇到了一個問題:
sql:ORA-00918: 未明確定義列的錯誤。(連接的兩個表中屬性名重複,而又需要查詢此屬性。要指定是哪個表裏的屬性)
上面語句
select ename, sal from emp
join (select max(sal), deptno from emp group by deptno ) t
on (emp.sal = t.max(sal) and emp.deptno = t.deptno); //顯示每個部門工資最高的人的姓名和工資
雖然這個屬性在兩張表裏的內容相同,但在select中必須指定是哪個表裏的deptno
修改後:
select ename, sal , e.deptno from emp
join (select max(sal), deptno from emp group by deptno ) t
on (emp.sal = t.max(sal) and emp.deptno = t.deptno); //顯示每個部門工資最高的人的姓名和工資