理解sql查询'distinct'初学者

时间:2015-09-05 06:13:30

标签: mysql

名为Employee的原始表显示如下:

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

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

结果显示:

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

query2 select distinct Salary from Employee order by Salary desc limit 1,1;

结果显示:

  

空集;

如何理解这两个sql查询?我一直认为query2的结果会是这样的吗?

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

任何人都可以给我一些建议吗?

enter image description here

1 个答案:

答案 0 :(得分:1)

第一个查询将返回DISTINCT *,id和salary的不同组合,你有两个,即两行:1, 100& 2, 100LIMIT 1, 1的使用将结果限制为从OFFSET 1开始的1条记录,因此您在第一次查询时获得第二条记录

第二个查询将返回DISTINCT salary,其中只有一个100。使用LIMIT 1,1再次尝试将结果限制为从OFFSET 1开始的1条记录,但因为只有一条记录开始,所以第二个偏移处没有记录,因此是空集。

检查此https://dev.mysql.com/doc/refman/5.0/en/select.html

上的LIMIT部分