Mysql查询:显示给定用户ID的所有唯一IP

时间:2013-04-16 11:53:28

标签: mysql sql

我试图让用户的所有ip都用到现在。

"SELECT * FROM `logfeeds` WHERE uid=3"

简单查询给出了所有的ips,但我想要的是每次只获得一次ip。

logfeeds
enter image description here

我希望查询每个uid只返回一次IP。

屏幕截图同时包含id = 23和id = 29,但它应该只显示id = 23,因为id = 23且id = 29具有相同的ip。

6 个答案:

答案 0 :(得分:1)

使用distinct:

来自mysql doc

DISTINCT指定从结果集中删除重复的行。

SELECT distinct ip FROM logfeeds WHERE uid=3;

答案 1 :(得分:1)

使用以下查询:

"SELECT * FROM `logfeeds` WHERE uid=3 GROUP BY ip"

这肯定会对你有用。

答案 2 :(得分:1)

如果您每次只需要IP一次,请使用DISTINCT。

SELECT DISTINCT ip, * FROM `logfeeds` WHERE uid=3;

如果您关心最常见的IP,请使用GROUP BY

SELECT *, COUNT(ip) as logged_in_count FROM `logfeeds` WHERE uid=3 GROUP BY ip ORDER BY logged_in_count DESC;

虽然GROUP BY在您需要计数时起作用,但在其他情况下最好使用distinct,因为它是更正确的方法。

请参阅:How to select unique records by SQL

答案 3 :(得分:0)

这假定步骤
idtimestamp增加 并且您想要所有列(您确实使用了SELECT *

SELECT
   MIN(id), uid, ip, MIN(timestamp)
FROM
   logfeeds
WHERE
   uid=3
GROUP BY
   uid, ip

答案 4 :(得分:0)

您应该尝试使用distinct语句

SELECT DISTINCT(ipcolumn) FROM logfeeds ....

更多信息:http://www.w3schools.com/sql/sql_distinct.asp

答案 5 :(得分:0)

试试这个:

"SELECT Distinct(ip),timestamp FROM `logfeeds` WHERE uid=3"