Oracle資料庫inner join用法如下。
例如有兩張資料表DEPARTMENT
及EMPLOYEE
。
EMPLOYEE DEPARTMENT
+----+---------------+------+ +---------------+-----------------+
| ID | DEPARTMENT_ID | NAME | | DEPARTMENT_ID | DEPARTMENT_NAME |
+----+---------------+------+ +---------------+-----------------+
| 1 | 1 | John | | 1 | SALES |
| 2 | 1 | Mary | | 2 | HR |
| 3 | 2 | Luke | +---------------+-----------------+
| 4 | 2 | Anna |
| 5 | 3 | Eric |
+----+---------------+------+
則對此兩張表依DEPARTMENT_ID
做inner join如下。
SELECT e.ID, e.NAME, d.DEPARTMENT_NAME
FROM employee e
INNER JOIN department d
ON e.department_id = d.department_id;
查詢結果僅會返回兩表DEPARTMENT_ID
相等的列(row)。
+----+------+-----------------+
| ID | NAME | DEPARTMENT_NAME |
+----+------+-----------------+
| 1 | John | SALES |
| 2 | Mary | SALES |
| 3 | Luke | HR |
| 4 | Anna | HR |
+----+------+-----------------+
EMPLOYEE
第5列的DEPARTMENT_ID
為3不存在於DEPARTMENT.DEPARTMENT_ID
,不符inner join條件所以未查出。
當JOIN
前面沒有指示是哪一種join type(INNER
, OUTER
, LEFT
, RIGHT
)等時是INNER JOIN
(其他資料庫的SQL語法也是一樣,因為這是ANSI SQL標準)。例如下面也是INNER JOIN
。
SELECT e.ID, e.NAME, d.DEPARTMENT_NAME
FROM employee e
JOIN department d
ON e.department_id = d.department_id;
在Oracle 9i以前inner join的舊語法如下,直接查詢多個表並以WHERE
來篩選相等的欄位;之後改用以上INNER JOIN
較清楚的寫法。
SELECT e.ID, e.NAME, d.DEPARTMENT_NAME
FROM employee e, department d
WHERE e.department_id = d.department_id;
沒有留言:
張貼留言