我在想如何制作应该抓住我想要的信息的SQL。而我无法找到答案。我需要创建SQL,它可以在48小时内从我的表中获取6个下载最多的记录并按时间顺序排序。我的表看起来像
这就是我的表格的样子:http://puu.sh/4VL9z.png
所以查询应该在48小时内获取唯一的行(通过IP,不应该有相同的downloader_ip),然后通过下载只获取6个流行的行,并通过“modification_id”显示它。应该有6个不同的“modification_id”。
那么如何制作这样的SQL?
修改
我会想象如果我有行:
| id | modification_id | time | file_name | downloader_ip |
| 1 | 320 | 1382368921 | name.rar | 127.01.015.14|
| 2 | 322 | 1382368925 | name.rar | 127.02.015.14 |
| 3 | 325 | 1382368926 | name.rar | 127.03.015.14 |
| 4 | 326 | 1382368928 | name.rar | 127.04.015.14 |
| 5 | 328 | 1382368930 | name.rar | 127.05.015.14 |
| 6 | 330 | 1382368935 | name.rar | 127.06.015.14 |
所以如果表格看起来像这样,那么查询应该显示1-6行(按id)。
答案 0 :(得分:0)
因此,您无法使用DISTINCT
,因为这是一个后置过滤器。您必须使用GROUP BY
代替,这会使您在列(或列组)上具有唯一性。将其与DATE_SUB
(基于日期限制)和LIMIT
(限制为6个条目)相结合,您应该很好!
SELECT *
FROM download_records
WHERE
time >= DATE_SUB(time,INTERVAL 2 DAY)
GROUP BY modification_id
ORDER BY time DESC
LIMIT 0, 6