ユニオンは列位置で機能します 名前ではありません。ただし、*
を実行したため、列の位置を指定していません したがって、データベースによって選択された順序で選択されますが、ユーザーによって選択されたものではありません。
最終結果セットの名前は、ユニオンの最初のクエリの列の名前です。
修正は簡単です。必要なすべての列の名前を書き出し、3つのクエリすべての間で順序が一貫していることを確認してください。
列は名前で並べ替えられていません(したがって、列の名前を変更しても役に立ちません)。順序はデータベース内の内部順序です。
*
を使用する 悪い習慣と見なされます:何を取得しているのかわからないため、一部の列のみが必要な場合は、*
を使用してください 必要以上に多くのデータを取得するため、処理が遅くなります。
ところで、このような(番号による)列の命名は、プログラミングの実践としては非常に貧弱です。いったいどうやって物事をまっすぐに保つのですか?列には番号があり、テーブルには番号があります。難読化されたコードを書き込もうとしていますか?他の誰もあなたのコードで作業できないようにするには?もしそうなら、これはそれを行う1つの方法だからです。