我试图让用户的所有ip都用到现在。
"SELECT * FROM `logfeeds` WHERE uid=3"
简单查询给出了所有的ips,但我想要的是每次只获得一次ip。
logfeeds
我希望查询每个uid只返回一次IP。
屏幕截图同时包含id = 23和id = 29,但它应该只显示id = 23,因为id = 23且id = 29具有相同的ip。
答案 0 :(得分:1)
答案 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
,因为它是更正确的方法。
答案 3 :(得分:0)
这假定步骤
中id
和timestamp
增加
并且您想要所有列(您确实使用了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
....
答案 5 :(得分:0)
试试这个:
"SELECT Distinct(ip),timestamp FROM `logfeeds` WHERE uid=3"