名为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
------------------------
任何人都可以给我一些建议吗?
答案 0 :(得分:1)
第一个查询将返回DISTINCT *
,id和salary的不同组合,你有两个,即两行:1, 100
& 2, 100
。 LIMIT 1, 1
的使用将结果限制为从OFFSET
1开始的1条记录,因此您在第一次查询时获得第二条记录
第二个查询将返回DISTINCT salary
,其中只有一个100
。使用LIMIT 1,1
再次尝试将结果限制为从OFFSET
1开始的1条记录,但因为只有一条记录开始,所以第二个偏移处没有记录,因此是空集。