1

私は基本的にフォーラムを作成しています。'posts'テーブルと'members'テーブルを結合してすべてのトピックを出力しています。このようにして、トピックインデックスに投稿とメンバーの情報を表示できます。

私がやろうとしているのは、投稿した最後の3人のメンバーのユーザー名を収集することです。一意の値のみが必要です(誰かが二重投稿した場合に重複することはありません)現在DISTINCTを使用していますが、問題はユーザー名が後にグループ化されることですそれらは逆順に並べられています。誰かが最初と最後の投稿をした場合、このリストからそのユーザー名を取得することはできません。

これが私が使用しているコードです:

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

グループ化の前にユーザー名が逆順に並べられるようにそのコードを変更する方法はありますか?質問がわかりにくい場合は、お詫び申し上げます。

4

1 に答える 1

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
于 2013-02-10T09:33:05.507 に答える