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

MySql 5.7 ORDERBY句はGROUPBY句に含まれておらず、集計されていない列が含まれています

    これはあなたの質問です:

    SELECT p.title, COUNT(t.qty) AS total 
    -------^
    FROM payments t LEFT JOIN
         products AS p 
         ON p.id = t.item 
    WHERE t.user = 1 
    GROUP BY t.item
    ---------^
    ORDER BY t.created DESC;
    ---------^
    

    指摘された場所には問題があります。 SELECTに注意してください およびGROUP BY 別の列を参照しています。 LEFT JOINで 、あなたは(ほとんど)常に最初ので何かによって集約したいと思っています 2番目ではなくテーブル。

    ORDER BY 別の問題です。この列で集計していないため、必要な値を決定する必要があります。 MIN()を推測しています またはMAX()

    SELECT p.title, COUNT(t.qty) AS total 
    FROM payments t LEFT JOIN
         products AS p 
         ON p.id = t.item 
    WHERE t.user = 1 
    GROUP BY p.title
    ORDER BY MAX(t.created) DESC;
    

    そのCOUNT(t.qty)も追加します 疑わしいです。通常、qty 「数量」を指し、必要なのは合計です:SUM(t.qty)



    1. MySQLで文字セットを変更することによる潜在的な障害はありますか?

    2. 関数を使用した外部適用のパフォーマンス

    3. mysql2つの列を使用していない場合

    4. MySQLタイムスタンプ選択の日付範囲