最後のid
が必要な場合 asker
ごとに 、次に集計関数を使用する必要があります:
SELECT max(id) as id,
asker
FROM questions
GROUP by asker
ORDER by id DESC
異常な結果が得られた理由は、MySQLがGROUP BY
の拡張機能を使用しているためです。 これにより、選択リスト内のアイテムを集約せず、GROUPBY句に含めないようにすることができます。ただし、MySQLは返される値を選択できるため、これは予期しない結果につながる可能性があります。 (GROUPBYへのMySQL拡張機能
を参照してください。 )
MySQLドキュメントから:
ここで、テーブルから返す必要がある他の列があるが、それらをGROUP BY
に追加したくない場合 取得できる結果に一貫性がないため、サブクエリを使用してこれを行うことができます。 (デモ
)
select
q.Id,
q.asker,
q.other -- add other columns here
from questions q
inner join
(
-- get your values from the group by
SELECT max(id) as id,
asker
FROM questions
GROUP by asker
) m
on q.id = m.id
order by q.id desc