1. 程式人生 > 其它 >牛客線上程式設計練習:SQL9_中等

牛客線上程式設計練習:SQL9_中等

技術標籤:牛客線上程式設計_SQL篇mysql資料庫sql

SQL練習:SQL9_中等


題目: 獲取所有部門當前(dept_manager.to_date=‘9999-01-01’)manager的當前(salaries.to_date=‘9999-01-01’)薪水情況,給出dept_no, emp_no以及salary,輸出結果按照dept_no升序排列

(請注意,同一個人可能有多條薪水情況記錄)

CREATE TABLE `dept_manager` (
`dept_no` char(4) NOT NULL,
`emp_no` int(11) NOT NULL,
`from_date`
date NOT NULL, `to_date` date NOT NULL, PRIMARY KEY (`emp_no`,`dept_no`)); CREATE TABLE `salaries` ( `emp_no` int(11) NOT NULL, `salary` int(11) NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL, PRIMARY KEY (`emp_no`,`from_date`));

題解

#方式1:隱式內連線
SELECT D.dept_no,D.emp_no,S.salary
FROM
dept_manager D,salaries S WHERE D.emp_no = S.emp_no AND D.to_date = '9999-01-01' AND S.to_date = '9999-01-01' ORDER BY D.dept_no #方式2:顯式內連線 SELECT D.dept_no,D.emp_no,S.salary FROM dept_manager D INNER JOIN salaries S ON D.emp_no = S.emp_no # INNER可省略 WHERE D.to_date = '9999-01-01' AND S.to_date = '9999-01-01'
ORDER BY D.dept_no #方式3:左外連線 SELECT D.dept_no,D.emp_no,S.salary FROM dept_manager D LEFT JOIN salaries S ON D.emp_no = S.emp_no # OUTER可省略 WHERE D.to_date = '9999-01-01' AND S.to_date = '9999-01-01' ORDER BY D.dept_no #方式4:右外連線 SELECT D.dept_no,D.emp_no,S.salary FROM dept_manager D RIGHT OUTER JOIN salaries S ON D.emp_no = S.emp_no # OUTER可省略 WHERE D.to_date = '9999-01-01' AND S.to_date = '9999-01-01' ORDER BY D.dept_no

個人整理的筆記,僅供學習使用,有問題麻煩指正。
題目及解答思路均來源於:牛客網