Mysql
 sql >> база данни >  >> RDS >> Mysql

mysql union грешни колони в резултат

Съюзът работи по колона позиция НЕ име. Но не сте посочили позицията на колоната, защото сте направили * така че е в някакъв ред, избран от базата данни, но не избран от вас.

Името на крайния резултатен набор е името на колоните в първата заявка в съюза.

Поправката е лесна:напишете имената на всички колони, които искате, и се уверете, че редът е последователен между трите заявки.

Колоните НЕ са сортирани по име (така че преименуването на колоните няма да ви помогне), редът е някакъв вътрешен ред в базата данни.

Използване на * се счита за лоша практика:не знаете какво получавате и ако имате нужда само от някои от колоните, тогава използвайте * извлича повече данни, отколкото е необходимо, което прави нещата по-бавни.

BTW Именуването на колони като това (по номер) е много лоша практика за програмиране. Как, за Бога, поддържаш нещата прави? Вашите колони имат числа, вашите таблици имат числа. Опитвате ли се да пишете объркан код? За да сте сигурни, че никой друг няма да може да работи върху вашия код? Защото ако сте, това е един от начините да го направите.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да променя референтното действие на външния ключ? (поведение)

  2. Има ли разлика между varchar(10) и varchar(1000), когато съхраняваме низ, чиято дължина е по-малка от 10?

  3. Как да получите достъп до MySQL от няколко нишки едновременно

  4. Преглеждане на набора от резултати

  5. Печат за време без промяна при актуализация