我正在尝试获取用户到目前为止使用的所有 ip。
"SELECT * FROM `logfeeds` WHERE uid=3"
简单的查询给出了所有的 ip,但我想要的是每个 ip 只获取一次。
日志提要
我希望查询每个 uid 只返回每个 IP 一次。
屏幕截图同时具有 id = 23 和 id = 29,但它应该只显示 id = 23,因为 id=23 和 id=29 具有相同的 ip。
使用以下查询:
"SELECT * FROM `logfeeds` WHERE uid=3 GROUP BY ip"
这肯定会为你工作。
如果您每次只需要一次 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
在其他情况下使用,因为它是更正确的方法。
请参阅:如何通过 SQL 选择唯一记录
尝试这个:
"SELECT Distinct(ip),timestamp FROM `logfeeds` WHERE uid=3"
这假设id
并timestamp
增加步骤
并且您想要所有列(您确实使用过SELECT *
)
SELECT
MIN(id), uid, ip, MIN(timestamp)
FROM
logfeeds
WHERE
uid=3
GROUP BY
uid, ip
你应该尝试不同的声明
SELECT DISTINCT(ipcolumn) FROM logfeeds
……