UNION 2 таблицы много полей, несколько разных, можно использовать SELECT *? - PullRequest
0 голосов
/ 31 января 2020

У меня есть 2 MYSQL таблицы, одна с 794 полями, другая с 796 полями, общие 794 поля одинаковы. Да, подлинные цифры, импорт данных из старой системы в новую.

Если я сделаю:

SELECT foo 
FROM (SELECT * 
      FROM bar1 UNION 
      SELECT *, null as `Extra Field 1`, null as `Extra Field 2` 
      FROM bar2
     ) bar1_2 
WHERE key = "Value in bar2 only";

, то получится неправильное значение foo.

Где SELECT foo FROM bar2 WHERE key = "Value in bar2 only";

дает правильное значение foo

, т. Е. Столбцы смещены, хотя Extra Field 1 и Extra Field 2 являются правильными именами дополнительных полей.

Есть ли способ по-прежнему использовать * или какой-либо другой ярлык, чтобы избежать записи имен 796 столбцов в запросе?

Я мог бы программно создать строку запроса, но в случае, если есть SQL -только способ?

1 Ответ

1 голос
/ 31 января 2020

Вы не можете использовать UNION с разным количеством столбцов без явной записи имен столбцов.

Поэтому, если вы хотите избежать написания имен столбцов, вы можете добавить два дополнительных поля в bar1 и затем выполнить запрос UNION.

...