Q57.
關聯式資料表(Relational Table)Employee(EID,DNo,Salary) ,分別表示員工之員工編號、所屬部門編號、薪水,假設要列出一些員工編號,其條件為其薪水小於任何一個部門編號為5 的員工薪水,若用巢狀(Nested)結構查詢,則其外層(第一層)的WHERE 條件應如何寫才對?
電腦軟體設計共同科目 · 乙級 · Q57
難易度分析
3 / 5
本題要求考生區分 SQL 巢狀查詢中量詞運算子的正確語法與邏輯含義。除了需要掌握特定關鍵字的定義外,還需能辨識非標準的偽關鍵字,並理解純量運算子與多值子查詢搭配時的限制,因此將難度評定為普通程度。
正確答案:④Salary <ANY(SELECT Salary FROM Employee WHERE DNo=5)
④ Salary <ANY(SELECT Salary FROM Employee WHERE DNo=5):<ANY 表示小於子查詢結果中的「至少一個值」,即小於子查詢回傳集合中的最大值,符合題目「小於任何一個部門編號為 5 的員工薪水」之語意要求。
錯誤選項解析
- ① Salary<EVERY(SELECT Salary FROM Employee WHERE DNo=5):EVERY 關鍵字在 SQL 中並非標準語法,關聯式資料庫(如 SQL Server、MySQL)並不支援此運算子,正確應使用 ALL 來表示「小於所有值」的條件。
- ② Salary < ANYONE(SELECT Salary FROM Employee WHERE DNo=5):ANYONE 不是 SQL 的合法關鍵字,子查詢比較運算子應使用 ANY 或 SOME,兩者功能完全相同。
- ③ Salary < (SELECT Salary FROM Employee WHERE DNo=5):直接使用 < 搭配會回傳多筆結果的子查詢會產生執行錯誤,因為純量比較運算子無法處理多值回傳,必須搭配 ANY 或 ALL 等量詞運算子。
Learning Tip
"本題核心考點為 巢狀查詢中的量詞運算子(ANY vs ALL)。<ANY 代表小於子查詢結果的最大值即可成立,而 <ALL 則需小於最小值才成立。常見陷阱是混淆「任何一個」的語意:中文的「任何一個」在此題脈絡下對應 SQL 的 ANY,而非 ALL。另外需牢記 EVERY 與 ANYONE 均非標準 SQL 關鍵字。"
學員答題分佈
①Salary<EVERY(SELECT Salary FROM Employee WHERE DNo=5)0%
②Salary < ANYONE(SELECT Salary FROM Employee WHERE DNo=5)0%
③Salary < (SELECT Salary FROM Employee WHERE DNo=5)0%
④Salary <ANY(SELECT Salary FROM Employee WHERE DNo=5)0%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!
相似類型題目
關聯式資料表(Relational Table)Employee(EID,DNo,Salary) ,分別表示員工之員工編號、所屬部門編號、薪水,假設要列出一些員工編號,其條件為其薪水大於部門編號為5 的所有員工薪水,若用巢狀(Nested)結構查詢,則其外層(第一層)的WHERE 條件應如何寫才對?
關聯式資料表(Relational Table)Employee(EID,DNo,Salary) ,分別表示員工之員工編號、所屬部門編號、薪水,Dept(DNo,DName) ,分別表示部門之部門編號、名稱,假設要列出部門名稱為業務部的員工編號,若用巢狀(Nested)結構查詢,則其外層(第一層)的WHERE 條件應如何寫才對?
關聯式資料表(Relational Table)Employee(EID,DNo,Salary) ,分別表示員工之員工編號、所屬部門編號、薪水,Dept(DNo,DName) ,分別表示部門之部門編號、名稱,假設要列出部門名稱為業務部的員工編號,若不用巢狀(Nested)結構查詢,則其WHERE 條件應包含下列那者才對?
關聯式資料表(Relational Table)Employee(EID,DNo,Salary) ,分別表示員工之員工編號、所屬部門編號、薪水,假設要列出不屬於任何部門的員工編號,則其WHERE 條件應如何寫才對?
在使用SQL 查詢時,若要以部門為計算單位,計算出所有「部門人數大於10 人」的部門員工的薪資總額,下列何者關鍵字不會用到?