sql >> データベース >  >> RDS >> Mysql

SUM(something)ASを使用する場合のフィールドリストの不明な列

    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のランダムな値を取得します 私の意見では、おそらくあなたの合計は正しくなく、偶発的なデカルト積を取得します。しかし、それは別の質問のトピックです。




    1. Postgres jsonb'?'の使用方法インデックスをサポートするLaravelの演算子?

    2. 1つのmysql_query()クエリでのPHPの複数のMYSQLコマンド

    3. SQL Server 2008 FullTextSearch の名前の 1 文字が結果に表示されない

    4. phpは配列IDキーを置き換えます