1
SELECT userid,SUBSTRING_INDEX(SUBSTRING_INDEX(data, '\"!', -1), '!\"', 1)+0 AS num
FROM table
WHERE type=2
ORDER BY num DESC LIMIT 5
これは、x!文字列で数値を返し、その数値で行を並べ替えようとします。それはうまく動作します。グループで正しく注文されていない行by
ただし、ユニークなユーザーIDを返す方法はわかりません。
ユーザーID、ORDER BYを追加すると、NUMで注文せずに行を返します。
SELECT userid,SUBSTRING_INDEX(SUBSTRING_INDEX(data, '\"!', -1), '!\"', 1)+0 AS num
FROM table
WHERE type=2
GROUP BY userid
ORDER BY num DESC LIMIT 5
個別のいずれかに動作しません:
SELECT DISTINCT(userid),SUBSTRING_INDEX(SUBSTRING_INDEX(data, '\"!', -1), '!\"', 1)+0 AS num
FROM table
WHERE type=2
ORDER BY num DESC LIMIT 5
私はアイデアをしています。..
例:
id userid data
1 56 !100!
2 22 !90!
3 56 !200!
結果は次のようになります。
userid num
56 200
22 90
は、各ユーザーIDに対して複数の可能な結果がありますか?もしそうなら、 'DISTINCT'は必要なものを与えません。各ユーザーIDに対して複数のレコードのうちどれを返すべきかを選択する基準は何ですか? –
同じユーザーIDを持つ複数の行がありますが、ユーザーIDは2回返されません。最高のnumを持つ一意のユーザーIDが返されます。 – domino
@Michaelはメインの投稿に例を追加しました。 – domino