Związek działa według kolumny pozycja NIE imię. Ale nie określiłeś pozycji kolumny, ponieważ zrobiłeś *
więc jest w jakiejś kolejności wybranej przez bazę danych, ale nie przez Ciebie.
Nazwa końcowego zestawu wyników to nazwa kolumn w pierwszym zapytaniu w unii.
Poprawka jest prosta:wypisz nazwy wszystkich żądanych kolumn i upewnij się, że kolejność wszystkich trzech zapytań jest spójna.
Kolumny NIE są sortowane według nazwy (więc zmiana nazw kolumn ci nie pomoże), kolejność jest wewnętrznym porządkiem w bazie danych.
Korzystanie z *
jest uważana za kiepską praktykę:nie wiesz, co otrzymujesz, a jeśli potrzebujesz tylko niektórych kolumn, użyj *
pobiera więcej danych niż jest to konieczne, co spowalnia działanie.
BTW Nazywanie kolumn takich jak ta (według liczby) jest bardzo kiepską praktyką programistyczną. Jak, u licha, utrzymujesz porządek? Wasze kolumny mają liczby, wasze stoły mają liczby. Czy próbujesz napisać zaciemniony kod? Aby mieć pewność, że nikt inny nigdy nie będzie mógł pracować nad Twoim kodem? Bo jeśli tak, to jest to jeden ze sposobów na zrobienie tego.