我正在制作一个列出不同类别记录的精选页面。 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
我知道有一个没有考虑,但我是新手,需要帮助为此编写一个嵌套语句。
答案 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