2013-02-10 66 views
1

我基本上是創建一個論壇。我將所有主題與我的「帖子」和「會員」表一起輸出。這樣我可以顯示主題索引的帖子和成員信息。DISTINCT後ORDER BY

我想要做的是收集最後三位成員發佈的用戶名,我只想要唯一的值(沒有重複的情況下,某人雙帖)我目前使用DISTINCT,但麻煩的是,用戶名被反向排序後被分組。如果有人做了第一個和最後一個帖子,我將無法從這個列表中找回他們的用戶名。

下面是我使用的代碼:

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

有沒有一種方式,使用戶名是他們的分組前向後下令,我可以修改代碼?如果我的問題很混亂,我很抱歉!

回答

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 
+1

謝謝!這是一個很大的幫助。我非常關注SELECT,我完全忘記了重新選擇。 – Tom 2013-02-11 04:11:20