次のテーブル(user_record)には、次のような数百万の行があります。
no uid s
================
1 a 999
2 b 899
3 c 1234
4 a 1322
5 b 933
-----------------
uidは重複する可能性があります。必要なのは、上位10件のレコード(uidとsを含む必要があります)をs(desc)による重複するuidの順序なしで表示することです。これは、次のSQLステートメントの2つの手順で実行できます。
SELECT distinct(uid) FROM user_record ORDER BY s DESC LIMIT 10
SELECT uid,s FROM user_record WHERE uid IN(Just Results)
1つのステートメントにもう少し効率的な方法があることを知っていますか?
どんな助けでも大歓迎です。
ps:私は次のSQLステートメントも持っています:
select * from(select uid,s from user_record order by s desc) as tb group by tb.uid order by tb.s desc limit 10
でも遅い