sql >> Databáze >  >> RDS >> Mysql

mysql union ve výsledku špatné sloupce

Union funguje podle sloupce pozice NE jméno. Neuvedli jste však pozici sloupce, protože jste zadali * takže je to v nějakém pořadí vybrané databází, ale nikoli vámi.

Název konečné sady výsledků je název sloupců v prvním dotazu ve sjednocení.

Oprava je snadná:Napište názvy všech požadovaných sloupců a ujistěte se, že pořadí mezi všemi třemi dotazy bude konzistentní.

Sloupce NEJSOU řazeny podle názvu (takže přejmenování sloupců vám nepomůže), pořadí je nějaký interní řád v databázi.

Pomocí * je považováno za špatnou praxi:Nevíte, co dostáváte, a pokud potřebujete pouze některé sloupce, použijte * načte více dat, než je potřeba, čímž se věci zpomalí.

BTW Pojmenování sloupců takto (číslem) je velmi špatná programovací praxe. Jak, proboha, udržujete věci v pořádku? Vaše sloupce mají čísla, vaše tabulky mají čísla. Snažíte se napsat zmatený kód? Chcete se ujistit, že na vašem kódu nemůže pracovat nikdo jiný? Protože pokud ano, toto je jeden způsob, jak to udělat.



  1. MariaDB LENGTH() vs LENGTHB():Jaký je rozdíl?

  2. Chyba (kód chyby:1175) při provádění příkazu aktualizace na stole pomocí MySQL Workbench 5.2

  3. Sekce konfiguračního souboru Mysql

  4. Vrátí jak výsledek dotazu, tak počet řádků