MySQL での GROUP BY 処理で、標準SQLに沿うようにするため複数指定すると、結果は異なる?
マニュアルを読む限り、MySQL の GROUP BY 拡張は、下記が必須条件のように(私には)読み取れました。
GROUP BY で名前が指定されていない各非集約カラム内のすべての値がグループごとに同じ
・内容が良く理解できないのですが、現実問題として「すべての値がグループごとに同じ」って状態はまずあり得ないのではないかと思います
不確定な値を取得しても困るため、標準SQLで書きたいのですが、
・例えば、リンク先のSQLを、標準SQLで書きたいという理由だけで下記へ変更した場合、SQLの意味は変わってくるでしょうか?
・具体的には、「GROUP BY o.custid」と「GROUP BY o.custid, c.name」の相違点は?
SELECT o.custid, c.name, MAX(o.payment)
FROM orders AS o, customers AS c
WHERE o.custid = c.custid
GROUP BY o.custid, c.name;
あるいは、下記SQLを標準SQLにしたい、という理由だけで
SELECT o.custid, o.name,o,address,MAX(o.payment)
FROM orders AS o
GROUP BY o.custid;
下記へ変更すると、意味は変わってくる?
SELECT o.custid, o.name,o.age,o.sex,MAX(o.payment)
FROM orders AS o
GROUP BY o.custid, o.name, o.age, o.sex;