私はかなり集中的なWHERE IN節を使用して、プレイヤーに関連するIDのリストを取得します。FIND_IN_SETでMySQL IN条件を使用する
SELECT p.name,
0a.stat_value
FROM leaderheadsplayers p
LEFT JOIN leaderheadsplayersdata_alltime 0a
ON 0a.player_id = p.player_id
AND 0a.stat_type = 'kills'
WHERE p.player_id IN
(SELECT player_id
FROM
(SELECT 0a.player_id
FROM leaderheadsplayersdata_alltime 0a
WHERE 0a.stat_type = 'kills'
ORDER BY 0a.stat_value DESC LIMIT 0,
20
) 1a
)
の問題は、私は再びIN句からの集中的なクエリを実行せずにFIND_IN_SETを使用して、私の最終的な結果にIN句からこれらのIDの順序を維持したいということです。このような 何か:
SELECT p.name,
0a.stat_value
FROM leaderheadsplayers p
LEFT JOIN leaderheadsplayersdata_alltime 0a
ON 0a.player_id = p.player_id
AND 0a.stat_type = 'kills'
WHERE p.player_id IN
(SELECT player_id
FROM
(SELECT 0a.player_id
FROM leaderheadsplayersdata_alltime 0a
WHERE 0a.stat_type = 'kills'
ORDER BY 0a.stat_value DESC LIMIT 0,
20
) 1a
)
ORDER BY FIND_IN_SET(p.player_id, result_from_in_clause)
これは私の現在の出力です:
player_id | stat_value
3 | 304
5 | 507
4 | 208
は、これは私が取得したいものです。
player_id | stat_value
5 | 507
3 | 304
4 | 208
Wご注文ですか?サブクエリ内で定義したもの – GurV
@Rovinあなたの最近の編集はあなたの質問を読めないままにしました。 –
編集を確認してください。 –