先放SQL语句
select top n id from 表名
where id not in (
select top m id from 表名
)
之前因为这个问题在网上找答案,结果让们都告诉我是这个:
这明显是扯淡!
连limit m,n的含义都没弄清楚,
limit m, m的含义
-
limit m,n是mysql的语法
select * from table limit [m],n;
其中,m—— [m]为可选,是偏移量,如果填写表示skip步长,即跳过m条;不填写表示默认为0;
n——显示条数。指从第m+1条记录开始,取n条记录。
-
而在网上的这个说法中把limit m,n定义成了获取m到n的记录数,这是不对的
-
limit m,n的意思是获取表中第m+1条开始往后n条的记录数
也就是说,limit 8,5 表示获取表中的第(8+1)到(8+5)条记录数,而根据网上的说法5-8明显是行不通的!
测试
下面图中,左边是MySQL的表和操作结果,右边是SQLServer的表和操作结果,证明真正的实现limit m,n的代码应该是
select top n id from 表名
where id not in (
select top m id from 表名
)