1

私はSQL構文に少し錆びているかもしれないので、これを自分で理解することはほぼ不可能です。次の表「履歴」を持つ典型的なMySQLインストールがあります。

userid        ip
----------- ----------
1            123.123.123.123  
1            123.123.123.123    
1            111.111.111.111    
2            213.213.213.213
2            214.214.214.214
2            215.215.215.215
3            163.123.121.123
4            111.222.121.212

基本的に、私は特定のユーザーIDと現在使用しているIPアドレスで特定のものをログに記録しています(他のものと一緒ですが、それは必要ありません)。ただし、達成したい最後のタスクは、使用されたIPの数を含むすべてのユーザーのリストを作成することです。この場合の最終結果は次のようになります。

userid       ipcount
-----------  ----------  
1            2  
2            3
3            1
4            1

これはどういうわけか可能だと思いますが、私はSQLの初心者です(カウントを取得することはできましたが、ユーザーIDでグループ化することはできませんでした)。これはPHPでスナッチで行うことができますが、サーバーにとっては余分な過負荷になります(現在、約5Kのエントリがあります)。SQLはまさにこれを行うために作られました...

みんなありがとう。:)

4

1 に答える 1

2
SELECT userid, COUNT(DISTINCT ip) AS ipcount
  FROM yourtable
 GROUP BY userid
于 2012-05-03T02:12:53.043 に答える