ORDER BY后的DISTINCT

时间:2013-02-10 00:53:03

标签: php mysql

我基本上是在创建一个论坛。我输出的所有主题都与我的“帖子”和“成员”表一起加入。这样我就可以显示主题索引的帖子和成员信息。

我想要做的是收集发布的最后三个成员的用户名,我只想要唯一的值(如果有人双重帖子没有重复)我正在使用DISTINCT,但麻烦的是用户名在他们被倒退后被分组。如果有人做了第一个和最后一个帖子,我将无法在此列表中检索他们的用户名。

这是我正在使用的代码:

SUBSTRING_INDEX(
  GROUP_CONCAT(DISTINCT `members`.`username` ORDER BY `posts`.`date` DESC SEPARATOR '\\\\') , '\\\\', 3
) AS member_last_username

有没有办法可以修改该代码,以便在分组之前向后排序用户名?如果我的问题令人困惑,我道歉!

1 个答案:

答案 0 :(得分:0)

当然,做一个以您想要的方式对数据进行排序的子选择,并将其用作输入。

SELECT 
  SUBSTRING_INDEX(
    GROUP_CONCAT(DISTINCT sub.username ORDER BY sub.`date` 
                 DESC SEPARATOR '\\\\') , '\\\\', 3
  ) AS member_last_username
FROM (SELECT m.username, p.`date` 
      FROM members m
      INNER JOIN post p ON (some join or other)
      ORDER BY backwards ordering ) sub