B meta_key でuser_idsを選択し、評価meta_value で並べ替える方法は?
ユーザー ID | メタキー | メタ値 -------------------------------------------------- --- 1A1 1B1 1C1 1 評価 9 8A1 8C1 8 評価 99999 7A1 7B1 7C1 7 評価 999
B meta_keyを持つユーザーの ID を取得し、ユーザーの評価値で ID を並べ替える必要があります。
これを試して:
SELECT T1.user_id
FROM yourtable T1
JOIN yourtable T2
ON T1.user_id = T2.user_id
AND T2.meta_key = 'rating'
WHERE T1.meta_key = 'B'
ORDER BY CAST(T2.meta_value AS SIGNED)
これを行うには、自己結合が必要です。
select t.*
from t left outer join
(select t.user_id, max(meta_value) as rating
from t
where t.meta_key = 'rating'
group by t.user_id
) r
on t.user_id = r.user_id
where meta_key = 'B'
order by r.rating