EDITED ::不同的多个领域

时间:2011-03-18 18:30:35

标签: mysql distinct

我有这个查询

SELECT distinct username, time
FROM `sadaat`.`wp_loginlog`
where username != 'admin' or username is not null
order by time DESC
limit 0,20

这并没有给我不同的记录。如果我把时间拿走,那就确实如此。我该怎么做才能在那里得到明显的结果。

如果我使用

SELECT distinct username
FROM `sadaat`.`wp_loginlog`
where username != 'admin' or username is not null
order by time DESC
limit 0,20

然后我无法获得时间值,因为它不会选择时间字段

3 个答案:

答案 0 :(得分:2)

DISTINCT子句引用SELECT子句中的所有属性,而不仅仅是用户名。 (实际上,拥有不同的用户名和非独特的时间是没有意义的。)

例如,如果您的行具有相同的用户名和不同的时间,则始终显示

也许,如果您想了解与每位用户相关的时间信息,可以查看group by clause

答案 1 :(得分:2)

您当前的查询无效,因为distinct会考虑您选择的所有列。

如果您想要包含time列的不同用户名,则可以将group bytime列的聚合结合使用,例如:

SELECT username, max(time)
FROM `sadaat`.`wp_loginlog` where username != 'admin' or username is not null
group by username
order by time DESC limit 0,20

答案 2 :(得分:0)

这就是诀窍

   SELECT *
    FROM `sadaat`.`wp_loginlog`
    where username != 'admin' or username is not null
Group By username
    order by time DESC
    limit 0,20