SELECT
で同じレベルで定義した列を選択することはできません 句。式を再利用する場合は、派生テーブルを使用する必要があります。
SELECT x.*, (common_p_count+common_r_count)
FROM (
SELECT
a.user AS a_user,
b.user AS b_user,
SUM(a.post = b.post) AS common_p_count,
SUM(a.option = b.option) AS common_r_count
FROM response a, response b
WHERE a.user = '1' AND b.user != '1' group by b.user
) x
または、もちろん、次の式を繰り返すだけです:
SELECT
a.user AS a_user,
b.user AS b_user,
SUM(a.post = b.post) AS common_p_count,
SUM(a.option = b.option) AS common_r_count,
(SUM(a.post = b.post) + SUM(a.option = b.option))
FROM response a, response b
WHERE a.user = '1' AND b.user != '1' group by b.user
その式で並べ替えるだけの場合は、トリックなしでそれが可能です(ただし、SELECT
はできません。 クエリの同じレベルの式)
SELECT
a.user AS a_user,
b.user AS b_user,
SUM(a.post = b.post) AS common_p_count,
SUM(a.option = b.option) AS common_r_count
FROM response a, response b
WHERE a.user = '1' AND b.user != '1' group by b.user
ORDER BY common_p_count + common_r_count
サイドノート
もちろん、上記の説明は別として、あなたの質問は正しくないと思います。 b.user
のみでグループ化しているため 、a.user
のランダムな値を取得します 私の意見では、おそらくあなたの合計は正しくなく、偶発的なデカルト積を取得します。しかし、それは別の質問のトピックです。