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

OracleUNIONおよびORDERBYに関する奇妙な問題

    これは実際には質問に答えませんが、言語要件ではなく、パーサーのバグ(または「機能」)のようです。

    My Oracle Supportによると、これはバグ14196463として発生したようですが、解決せずに閉じられました。コミュニティスレッド3561546でも言及されています。ただし、これらのいずれかを表示するには、MOSアカウント、または少なくともOracleアカウントが必要です。

    また、私が知る限り、MOSアカウントではなく基本的なOracleログインを必要とするOTNスレッドでも説明されています。それも多くの情報を持っていませんが、あなたの発見を繰り返します、そしてまた行動が少なくとも9.2.0.8にそしておそらくずっと以前に存在していたことを示唆します。

    ドキュメントは少しあいまいですが、これが問題になると予想されることを示していません:

    セット演算子UNIONを含む複合クエリの場合 、INTERSECTMINUS 、またはUNION ALLORDER BY 句は、明示的な式ではなく、位置またはエイリアスを指定する必要があります。また、ORDER BY 句は、最後のコンポーネントクエリにのみ表示できます。 ORDER BY 句は、複合クエリ全体によって返されるすべての行を並べ替えます。

    式をエイリアスして使用しているのですが、特定のコンポーネントをエイリアスする必要があるとは言えません(もちろん、しないとは言えません)。 どちらかをする必要があります。

    動作は、エイリアスが最終的なプロジェクションに有効であることに矛盾しているようであり、エイリアスに関する通常のルールは、orderby句でのみ有効です。これはその中間のどこかにあるようです。



    1. テキストとvarcharの違い(文字が異なります)

    2. SQLServerプロセスキューの競合状態

    3. PostgreSQLネストされたJSONクエリ

    4. SQLServerデータベースのすべてのテーブルからすべての主キーを削除する方法-SQLServer/TSQLチュートリアルパート65