Порядок выборки колонок с одинаковыми названиями при объединении двух таблиц
Есть 2 таблицы: locality и region. В них есть одноименные поля name, deleted_at и другие. А также поля с уникальными для каждой таблицы названиями.
В запросе
SELECT *, locality.*
FROM locality
JOIN region ...
я использую *, locality.*, таким образом одноименные колонки из locality "затирают" region: выбирается locality.name, а не region.name.
Насколько такое поведение стандартизировано? Не будет ли проблем при миграции Postgresql <=> Mysql? При обновлении версии РСУБД поведение может поменяться?
PS. Вариант прописать все поля вручную SELECT locality.name, region.region_code, ... не предлагать.
Ответы (1 шт):
Очень плохая практика указывать в запросе *, если только это не тестовый стенд.
Количество полей в таблице может измениться, и ожидающая сторона может попросту упасть.
Всегда перечисляйте все колонки в указании полей.
Если очень хочется гибкости указывайте таблицы по очереди:
SELECT region.*, locality.*
Но, повторюсь, так лучше не делать!