0

「コメント」と「いいね」の 2 つのテーブルがあり、いいねされたすべてのコメントを表示し、コメントが追加された時点で並べ替えることができます。現時点で私ができないように見えるのは、いいねされた時期に応じてコメントを並べ替えることです。

これは私が現時点で持っているものです:

SELECT * 
FROM comments AS c 
WHERE EXISTS (
    SELECT * 
    FROM likes AS l 
    WHERE c.commentID=l.commentID)

SQL を使って、最近気に入ったコメントから順にコメントを表示するのを手伝ってくれる人はいますか...

追加するだけです-コメントを一度だけ表示し、いいねされていないコメントを表示したくない.

4

3 に答える 3

4

テーブルを結合したい。

SELECT comments.*
FROM comments JOIN likes ON comments.commentID = likes.commentID
GROUP BY comments.commentID
ORDER BY MAX(likes.date) DESC;

JOIN、コメントやいいねのすべてのフィールドを含む行を作成します。使用するLEFT JOIN場合は、高く評価されていないコメントが含まれますが、プレーンを使用すると、JOIN必要なことを実行できます。

GROUP BY行を折りたたむため、コメントごとに1つだけになります。

同様のORDER BY日付で行を並べ替えます。MAX(likes.date)コメントごとに同じような日付がたくさんある可能性があり、特定の日付を選択したいので、私は使用しました。MIN(likes.date)探しているものに応じて、同様に試すことができます(最近気に入ったものと最初に気に入ったもの)。

于 2013-02-05T18:47:53.803 に答える
3

特定のコメントに複数のいいねがある場合は、次のような集計が必要です。

SELECT c.*
FROM comments c join
     (select l.commentId, MIN(likedate) as FirstLikeDate, MAX(likedate) as MaxLikeDate
      from likes l
      group by l.commentId
     ) l
     on c.commentId = l.CommentId
order by MaxLikeDate desc
于 2013-02-05T18:51:28.110 に答える
0

好きなコメントだけを表示したいので、これを行うことができます:

SELECT * FROM comments INNER JOIN likes USING(commentID) ORDER BY like_date DESC;
于 2013-02-05T18:52:20.590 に答える