日期:2014-05-16  浏览次数:20762 次

如何用一条sql查询不包含前5条记录的记录?
用最新时间排序,然后最新的前5条记录不要查询,查询第6条之后的记录用一条sql怎么实现?

------解决方案--------------------
可考慮用存儲過程來實現:
DELIMITER $$

DROP PROCEDURE IF EXISTS `db`.`sp` $$
CREATE PROCEDURE `sp`()
begin

prepare stmt from 'Select * from table limit 6,? ' ;

select count(*) into @inta from table;

execute stmt using @inta;

end $$

DELIMITER ;
------解决方案--------------------
首先判断纪录数是否大于5,如果小于等于,报纪录数不足.否则取倒序的前纪录数-5即可.这样可以吗?
------解决方案--------------------
你要不用存储过程只能这样写了。
select count(*) from 你的表 into @cnt;
select * from 你的表 where 1 = 1 order by 时间字段 desc limit 6,@cnt;

------解决方案--------------------
select * from table where ID not in ( select * from (select ID from table order by time limit 5) as t) order by time

id是主键。
------解决方案--------------------
select * from 你的表 where 1 order by 时间字段 desc limit 6,9999999