テーブルにこれらの列がありますcomments
:
id
content
add_date
uid
school_id
行は同じ school_id を持つことができます。
add_date に従って最新のデータを選択したいのですが、school_id ごとに 1 行のみ( の重複はありませんschool_id
)、制限は 10 です。
私はすでに多くのコードを試しましたが、うまくいきません。どんな助けでも大歓迎です。
テーブルにこれらの列がありますcomments
:
id
content
add_date
uid
school_id
行は同じ school_id を持つことができます。
add_date に従って最新のデータを選択したいのですが、school_id ごとに 1 行のみ( の重複はありませんschool_id
)、制限は 10 です。
私はすでに多くのコードを試しましたが、うまくいきません。どんな助けでも大歓迎です。
これを私たちは と呼んでいますGreatest N per Group
。グループ化されていないテーブルに対して結合できるように、サブクエリを挿入することでこれを実現できます ( comments
)。これを試して:
SELECT c.*
FROM
(
SELECT school_id, MAX(add_date) maxDate
FROM comments
GROUP BY school_id
) x INNER JOIN comments c
ON x.school_id = c.school_ID AND
x.maxDate = c.add_date
ORDER BY x.maxDate desc
LIMIT 10
select C.ID, C.Content, t1.MaxDate as [add_date], C.uid, t1.school_id
from (selet school_id, max(add_Date) as 'MaxDate'
from comments
group by school_id) T1
inner join comments C on T1.school_id = C.school_id and C.add_Date= T1.MaxDate
LIMIT 10
どの 10 が返されるかを選択する場合は、、または句rows
を追加します。order by
Where
select c1.*
from comments c1
where add_date = (select max(add_date) from comments c2 where c2.school_id =c1.school_id)
order by add_date desc
limit 10
コメント(add_date)とコメント(school_id、add_date)にインデックスを作成します