我需要一个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
答案 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”代表结果的长度。