带有双重限制的双DESC

时间:2015-01-15 05:23:53

标签: mysql sql

我需要一个mysql SELECT,它选择最后20个ID,它显示7点击率最高,但是从最后20个点开始,7个点击次数最多......而不是来自我尝试过DESC和LIMIT的所有ID但不是working..any idea ??

SELECT * FROM search ORDER BY clicks DESC, id DESC LIMIT 20 

SELECT * FROM search ORDER BY id DESC LIMIT 20
SELECT * FROM search ORDER BY clicks DESC LIMIT 7

或者

SELECT * FROM search ORDER BY id DESC LIMIT 20 UNION SELECT * FROM search ORDER BY clicks DESC LIMIT 7

2 个答案:

答案 0 :(得分:1)

试试这个

SELECT * FROM 
(
    SELECT * FROM search ORDER BY id DESC LIMIT 20
) SUB
ORDER BY clicks DESC LIMIT 7

修改

  

SUB在做什么..?

SUB 是子查询SELECT * FROM search ORDER BY id DESC LIMIT 20的别名。它可能有不同的名称,由你决定。

SELECT * FROM /*<=== Query 2 - Will be executed after Query 1 is run, thus will perform a search within the results returned by Query1*/
(
    SELECT * FROM search ORDER BY id DESC LIMIT 20 /*<=== SUBQUERY - Query 1 - Will be executed first */
) 
ORDER BY clicks DESC LIMIT 7

我们要去的是那个;首先,我们使用search SUB SELECT * FROM search ORDER BY id DESC LIMIT 20获取最近20行的结果集,然后我们运行SELECT查询 IN SUB 返回的结果集。

答案 1 :(得分:0)

试试这个:

您的查询应该是

SELECT * FROM search ORDER BY clicks DESC LIMIT 0, 20

SELECT * FROM search ORDER BY id DESC LIMIT 0, 20

其中“0”代表结果的起始位置,“20”代表结果的长度。