ページヒット (正規化) データを含むテーブルがあり、最新の 10 個の一意の IP を取得する必要があります。
私はこのようにそれをやろうとしました:
SELECT * FROM spy_hits ORDER BY date desc GROUP BY ip LIMIT 10;
この結果が得られるはずです:
+-----+------------+-----+---------+----+------+-- --+---------+-------+-------+ | | ID | 日付 | ip | ブラウザ | os | ページ | ホスト | リファラー | クエリ | エージェント | +-----+------------+-----+---------+----+------+-- --+---------+-------+-------+ | | 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;
大丈夫だと思ったもの。しかし、次の結果が得られます。
+-----+------------+-----+---------+----+------+-- --+---------+-------+-------+ | | ID | 日付 | ip | ブラウザ | os | ページ | ホスト | リファラー | クエリ | エージェント | +-----+------------+-----+---------+----+------+-- --+---------+-------+-------+ | | 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 (旧) | | | | VV 354 1244442065 (新規)
しかし、次の方法でグループ化する前に、次のようにしたいと考えています。
ID --- 日付 354 1244442065 (新規) ^ ^ | | | | 268 1242130818 (旧)
私はそれでPHPを使用しているので、誰かがPHPソリューションで結果を得る方法を知っているなら.
事前に乾杯:)