消除5个最新记录

时间:2013-02-08 17:38:13

标签: php mysql sql

我正在制作一个列出不同类别记录的精选页面。 5最新,5最少观看,5最受欢迎..

这部分并不困难:

最新:SELECT TOP 5 * ORDER BY ID_Record DESC

最少:SELECT * FROM tbl_Name WHERE ORDER BY Hits_Field LIMIT 5

最多:SELECT * FROM tbl_Name WHERE ORDER BY Hits_Field DESC LIMIT 5

这是我的问题.. 由于最新的记录可能是查看次数最少的,因此它们可以在两个查询中都显示出来。我想从考虑中删除5条最新记录。 我如何编写这样的SQL语句:

SELECT * FROM tbl_Name 
WHERE (NOT THE 5 NEWEST ID_Record BUT ALL OTHERS STILL IN CONSIDERATION) 
ORDER BY Hits_Field LIMIT 5

我知道有一个没有考虑,但我是新手,需要帮助为此编写一个嵌套语句。

5 个答案:

答案 0 :(得分:2)

尝试

SELECT * 
FROM `tbl_Name`
ORDER BY `Hits_Field`
LIMIT 5,5

LIMIT实际上可以有两个参数:偏移量和记录量。因此,如果要删除前5个记录并选择下5个记录,请使用LIMIT 5,5

答案 1 :(得分:2)

可能这可行:

"SELECT * from table_name where Id_Record not in (SELECT Id_Record from table_name order by Hits_Field LIMIT 5) order by Hits_Field LIMIT` 5"

答案 2 :(得分:1)

你可以抵消

SELECT * FROM tbl_Name 
ORDER BY Hits_Field LIMIT 5,5

答案 3 :(得分:1)

使用限制参数。

1)消除最新的5条记录

SELECT * FROM tbl_Name ORDER BY Hits_Field ASC LIMIT 5 [Parameter to display from **5** th record], 1000[Parameter to display up to 1000 record];

2)消除最少观看(最早)的5条记录

SELECT * FROM tbl_Name ORDER BY Hits_Field DESC LIMIT 5 [Parameter to display from **5** th record], 1000[Parameter to display up to 1000 record];

希望这会有所帮助。

答案 4 :(得分:0)

逻辑是 抓住最少的10个(有足够的记录来消除5个), 删除任何也出现在最新的(最多5,但可能更少), 然后将该数量限制为5

尝试EXCEPT或MINUS,例如

SELECT * FROM 
(
SELECT * FROM tbl_Name WHERE ORDER BY Hits_Field LIMIT 10
EXCEPT
SELECT TOP 5 * ORDER BY ID_Record DESC
)
LIMIT 5