3

我正在制作一个特色页面,其中列出了不同类别的记录。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

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

4

5 回答 5

2

尝试

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

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

于 2013-02-08T17:40:59.473 回答
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"
于 2013-02-08T18:36:56.807 回答
1

你可以抵消

SELECT * FROM tbl_Name 
ORDER BY Hits_Field LIMIT 5,5
于 2013-02-08T17:41:11.397 回答
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) 消除 Least-viewed(Oldest) 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];

希望这会有所帮助。

于 2013-02-08T18:16:26.543 回答
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
于 2013-02-08T18:01:52.223 回答