2013-10-10 54 views
0

我收到語義錯誤,當我試圖運行此查詢,無法看到任何錯誤。我收到語義錯誤,當我試圖運行此查詢,無法看到任何錯誤

找到員工與最低工資的SSN

select ssn from employee 

where salary < ALL 

(select salary from employee); 
+1

哪個數據庫? –

+0

「我收到語義錯誤」,太棒了!錯誤幫助我們知道發生了什麼....只要我們能夠看到它...... –

+1

Heya @heyguys,歡迎來到SO!請更新您的問題以使其更清楚。把自己放在我們的鞋子裏:沒有任何語境,文字根本就沒有任何意義。請注意,您可以隨時編輯您的問題以改進它。 – Jeroen

回答

1

你想找到一個薪水,這比所有其他工資較低。這是行不通的,因爲最低工資本身就在表格中。當我們達到最低工資時,就可以將其與表格中的所有其他工資進行比較。但是比較<時,我們將最低工資與自身進行比較時會失敗。

您需要將<更改爲<=

SELECT ssn FROM employee 
WHERE salary <= ALL (SELECT salary FROM employee); 

這將返回具有最低工資的所有員工的ssn。等效地,

SELECT ssn FROM employee 
WHERE salary = (SELECT MIN(salary) FROM employee); 
+0

@Bohemian:我不這麼認爲。謂詞是<= ALL,只有最小值可以小於或等於集合中的每個值。 –

+0

@axblount:最後一個等價於'SELECT TOP 1 WITH TIES ssn FROM employee ORDER BY salary'(儘管我不太確定Access是否支持WITH TIES)。 –

相關問題