【发布时间】:2010-11-01 03:06:27
【问题描述】:
我有一个包含 pagehit(标准化)数据的表,我需要获取 10 个最新的唯一 ip。
我试着这样做:
SELECT * FROM spy_hits ORDER BY date desc GROUP BY ip LIMIT 10;
这应该给我这个结果:
+-----+------------+-----+---------+----+------+-- ----+---------+--------+--------+ |编号 |日期 |知识产权 |浏览器 |操作系统 |页 |主持人 |推荐人 |查询 |代理| +-----+------------+-----+---------+----+------+-- ----+---------+--------+--------+ |第354章1244442065 | 2 | 3 | 2 | 16 | 1 | 47 | 12 | 2 | | 311 | 1244442000 | 1 | 2 | 1 | 16 | 1 | 36 | 12 | 1 | +-----+------------+-----+---------+----+------+-- ----+---------+--------+--------+ 2 行(0.00 秒)这是该网站的最新唯一身份访问者。
但是我得到一个语法错误而不是那个结果。
所以我必须做这个查询:
SELECT * FROM spy_hits GROUP BY ip ORDER BY date desc LIMIT 10;
我认为没问题。但它给出了这样的结果:
+-----+------------+-----+---------+----+------+-- ----+---------+--------+--------+ |编号 |日期 |知识产权 |浏览器 |操作系统 |页 |主持人 |推荐人 |查询 |代理| +-----+------------+-----+---------+----+------+-- ----+---------+--------+--------+ | 280 | 1242130841 | 2 | 3 | 2 | 16 | 1 | 47 | 12 | 2 | | 268 | 1242130818 | 1 | 2 | 1 | 16 | 1 | 36 | 12 | 1 | +-----+------------+-----+---------+----+------+-- ----+---------+--------+--------+ 2 行(0.00 秒)但这会在分组后按日期设置顺序,因此它会抓取表中的第一个唯一 ip,它们也是最旧的。
表格如下:
id --- 日期 268 1242130818(旧) | | 五五 354 1244442065(新)但我希望它在分组之前是这样的:
id --- 日期 354 1244442065(新) ^ ^ | | 268 1242130818(旧)我正在使用 PHP,所以如果有人知道如何使用 PHP 解决方案获得结果。
提前干杯:)
【问题讨论】:
-
+1 来自一个相对较新的用户的可靠问题。如果 StackOverflow 中的所有问题都是这样,世界会变得更美好。
-
+1 出于与上述评论相同的原因。继续努力吧! :)
标签: sql mysql group-by sql-order-by