Порядок выборки колонок с одинаковыми названиями при объединении двух таблиц

Есть 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 шт):

Автор решения: Nick Proskuryakov

Очень плохая практика указывать в запросе *, если только это не тестовый стенд. Количество полей в таблице может измениться, и ожидающая сторона может попросту упасть.

Всегда перечисляйте все колонки в указании полей.

Если очень хочется гибкости указывайте таблицы по очереди:
SELECT region.*, locality.*

Но, повторюсь, так лучше не делать!

→ Ссылка