groupbyのmysqlとoracleでの違い

684 ワード


select * from addressbook_organization where parent_unid='12345' group by unid;

同じ言葉でmysqlでは正しく、oracleでは間違っています.
よく見るとmysqlはこの言葉の処理が他のデータとは異なることに気づいた.他のデータベースでは、groupbyを含むクエリー文が必要です.select後に集約関数またはgroupbyのフィールドと一致する必要があります.
mysqlは上記の処理に対して、时には私たちをサボることができます.
彼はunidに従ってグループ化しますが、最新に挿入されたレコードだけを返します!言い換えれば、
例えば、このような2つの記録があります.
id 1,parent_unid '12345' ,unid '23456'
id 2,parent_unid '12345' ,unid '23456'
では、上記のクエリを適用すると、mysqlはid=2のレコードを返します.このレコードはid=1よりもデータベースに挿入されるからです.同様にoracleにこのクエリを適用すると、oracleはORA-00979:GROUP BY式ではないと直接報告します.同じ場合sybaseでもこのエラーが報告されます!