Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysql union błędne kolumny w wyniku

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Porównanie rozwiązań do replikacji Oracle i MySQL

  2. Wyrafinowana wartość zwracana przez MySQL

  3. Dynamiczny SQL Pivot (z CONVERT DateField

  4. Struktura danych dla różnych typów turniejów/rozgrywek (liga, drabinka, pojedyncza/podwójna eliminacja itp.)

  5. Jak wybrać różne wiersze bez używania grupy według instrukcji