【问题标题】:DISTINCT after ORDER BYORDER BY 后的 DISTINCT
【发布时间】:2013-01-25 10:48:00
【问题描述】:

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

我想要做的是收集最后三个发布成员的用户名,我只想要唯一值(如果有人重复发布,不要重复)我目前正在使用 DISTINCT,但问题是用户名倒序排列后进行分组。如果有人发了第一个和最后一个帖子,我将无法在此列表中检索他们的用户名。

这是我正在使用的代码:

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

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

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    当然,做一个子选择,按照你想要的方式排序你的数据并将其用作输入。

    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
    

    【讨论】:

    • 谢谢!这是一个很大的帮助。我太专注于 SELECT,我完全忘记了子选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多