不同的查询无法正常工作

时间:2013-09-02 00:54:55

标签: mysql unique distinct

我有一张这样的表(简化)

table t
PostID --- Userid ---长度

PostID是唯一的,但Userid不是。用户可以发几个帖子 现在我想创建一个最长帖子的排名列表并按照这样做:

SELECT DISTINCT(Userid), PostID FROM table t ORDER BY `Length` desc LIMIT 10

但这也给了我这样的结果:
PostID --- Userid --- Length
1 --- 100 --- 3,203
15 --- 942 --- 3,194
45 --- 100 --- 2,093

因此,用户发了两个会被排名的帖子。但我以为我避免使用DISTINCT条款重复这些副本? 我做错了什么?

2 个答案:

答案 0 :(得分:1)

听起来很有逻辑,你真的不想做DISTINCT,因为你只是想通过最长的帖子订购。

您真的只想获得最长的帖子,有时同一个用户会多次出现在列表中吗?

SELECT Userid, PostID FROM table t ORDER BY `Length` desc LIMIT 10

你明显没有工作的原因是因为你也在返回PostID。如果您删除PostID,那么您将获得一个独特的UserID。

要做我认为你想要的事情,你需要做一个如上所述here的子查询。

答案 1 :(得分:0)

DISTINCT正在从结果中删除重复的。 UserID为100的两行不重复,因为其他列中的值不同。