1

別の新しいスレッドが作成されるか、別のスレッドで応答が行われるまで、新しいスレッドが上部に表示される順序でボードを並べ替えます。これが発生すると、スレッドは1から2に下がります。

ただし、現在使用しているコードはこれのみを実行します。新しいスレッドが作成されると、下部に表示されますが、返信すると上部に表示されます。したがって、修正する必要があるのは、上部に作成された最新のスレッドも表示するようにすることだけです。

    SELECT b.id, b.name, b.subject, b.maintext, b.ip, b.date, b.img, b.replycount, MAX(r.date)
FROM 
    board b
    LEFT JOIN reply r ON r.id = b.id

GROUP BY b.id, b.date
ORDER BY GREATEST(b.date, MAX(r.date)) DESC
LIMIT 50;
4

1 に答える 1

2

greatest引数のいずれかがnullの場合はnullを返します=>元のスレッドの更新についてではなく、新しいスレッドと新しい返信に関心がある場合は、合体を使用することをお勧めします。

order by coalesce(MAX(r.date), b.date)


更新も気にする場合(したがって、b.dateはmax(r.date)よりも大きくなる可能性があります):

order by greatest(b.date, coalesce(MAX(r.date), b.date))
于 2012-05-18T22:43:24.663 に答える