1

我正在尝试获取用户到目前为止使用的所有 ip。

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

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

日志提要
在此处输入图像描述

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

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

4

6 回答 6

1

使用不同的:

来自mysql 文档

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

SELECT distinct ip FROM logfeeds WHERE uid=3;
于 2013-04-16T11:55:40.617 回答
1

使用以下查询:

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

这肯定会为你工作。

于 2013-04-16T11:56:13.087 回答
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在其他情况下使用,因为它是更正确的方法。

请参阅:如何通过 SQL 选择唯一记录

于 2013-04-16T12:06:09.430 回答
0

尝试这个:

"SELECT Distinct(ip),timestamp FROM `logfeeds` WHERE uid=3"
于 2013-04-16T11:57:44.960 回答
0

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

SELECT
   MIN(id), uid, ip, MIN(timestamp)
FROM
   logfeeds
WHERE
   uid=3
GROUP BY
   uid, ip
于 2013-04-16T11:55:35.647 回答
0

你应该尝试不同的声明

SELECT DISTINCT(ipcolumn) FROM logfeeds……

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

于 2013-04-16T11:55:56.493 回答