2015-09-05 53 views
0

原始表顯示如下:理解SQL查詢 '不同' 初學者名爲Employee

------------------------ 
    Id  |  Salary 
------------------------ 
    1  |  100 
------------------------ 
    2  |  100 
------------------------ 

QUERY1:select distinct * from Employee order by Salary desc limit 1,1;

結果顯示:

------------------------ 
    Id  |  Salary 
------------------------ 
    2  |  100 
------------------------ 

QUERY2select distinct Salary from Employee order by Salary desc limit 1,1;

結果顯示:

空集;

如何理解這兩個sql查詢?我總是認爲query2的結果會是這樣嗎?

------------------------ 
     Salary 
------------------------ 
     100 
------------------------ 

任何人都可以給我一些建議嗎?

enter image description here

回答

1

第一個查詢將返回ID和薪水,你有兩個,即兩排DISTINCT *,不同的組合:1, 100 & 2, 100。採用LIMIT 1, 1限制的結果1個記錄從OFFSET 1開頭,所以你得到的第二記錄作爲第一個查詢

的結果,第二個查詢將返回DISTINCT salary,你只有一個,即100。使用LIMIT 1,1再次嘗試將結果限制爲從OFFSET 1開始的1條記錄,但由於只有一條記錄開頭,因此第二個偏移處沒有記錄,因此爲空集。

檢查這個https://dev.mysql.com/doc/refman/5.0/en/select.html

+0

你的答案LIMIT節幫助了我很多,你是個好人! – zhaopei