0

テーブルにこれらの列がありますcomments

id
content
add_date
uid
school_id

行は同じ school_id を持つことができます。

add_date に従って最新のデータを選択したいのですが、school_id ごとに 1 行のみ( の重複はありませんschool_id)、制限は 10 です。

私はすでに多くのコードを試しましたが、うまくいきません。どんな助けでも大歓迎です。

4

3 に答える 3

1

これを私たちは と呼んでいます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
于 2012-08-03T00:54:39.117 に答える
0
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 byWhere

于 2012-08-03T00:53:00.153 に答える
0
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)にインデックスを作成します

于 2012-08-03T00:57:32.427 に答える