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

OracleがGROUPBY式ではないと言っているのはなぜですか?

    これは、MySQLがSQLのロジックを壊したという理由だけで起こります。

    テーブルempがあるとしましょう:

    id ename dept
    1  mark  10
    2  John  10
    3  Mary  10
    4  Jane  20
    

    とクエリ:

    select dept, ename
    from emp 
    group by dept;
    

    2つの部門があるので、2行を取得する必要がありますが、クエリはenameを要求します。 20の場合は明らかですが、10の場合、エンジンは何を返す必要がありますか?

    エラーを返す必要があります。与えるenameを推測できません。Oracleはエラーを発生させます-エラーですが、MySQLはenameを取得します(どちらが保証されていません)。これは誤解を招き、バグを引き起こす可能性があります。

    正しいクエリは次のようになります:

    select dept, max(ename) --the latest, alaphabeticaly
    from emp 
    group by dept;
    

    および

    --all enames and groups
    select dept, ename 
    from emp 
    group by dept, ename;
    

    この部分を修正したら、解決する必要があります

    COUNT(*) over() AS rowcount
    

    部。オラクルのAFAIKでは、分析関数とgroupbyクエリを混在させることはできません。



    1. Mysqlの構文は正しいようです

    2. MySQLで2つの日付の差の日数を取得するにはどうすればよいですか?

    3. PostgreSQLのテキスト/バイト列を大きなオブジェクトに移行しますか?

    4. データを並べて表示するようにテーブルをフォーマットする SSRS レポート