从考虑中排除最近的5条记录。

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

我知道有一个 NOT IN 考虑因素,但我对此还很陌生,需要帮助编写一个嵌套语句。

5个回答

2

尝试

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

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


K,一开始我以为你已经解决了它...但是我从你的帖子中学到了一些东西,谢谢。问题仍然存在,我不是想删除前五个结果,而是想在它们是表中最新的五条记录时将它们排除。 - Korey Inglin

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"

1
你可以抵消偏移量。
SELECT * FROM tbl_Name 
ORDER BY Hits_Field LIMIT 5,5

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];

希望这可以帮助到您。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接