База данных выбирает все данные с помощью квалификатора таблицы в PostgreSQL

#sql #postgresql #select

#sql #postgresql #выберите

Вопрос:

Мне нужно выбрать из базы данных несколько таблиц со многими столбцами. Итак, я хочу выбрать

 select t1.*,t2.*,t3.*
from table1 t1 
left outer join table2 t2 on ...
left outer join tabl 3 t3 on ...
...
  

Некоторые ключи имеют одинаковые имена, но — из-за внешней команды — иногда null . К сожалению, я не могу напрямую увидеть, поступает ли ключ из t1, t2 или t3. Есть ли возможность автоматически добавить имена таблиц или другой разделяющий / различающий квалификатор ко всем именам столбцов, т.Е. t1_thekey, t2_thekey, t3_thekey …?

Комментарии:

1. Не автоматически. Вам нужно переименовать каждый столбец по одному.

2. Чтобы добавить к вышесказанному, многие считают SELECT * это нежелательным, поскольку его значение меняется по мере изменения количества столбцов в таблице. Явно перечисляя каждый столбец, вы избегаете этой проблемы.

3. Это становится более сложным, поскольку я использую его внутри node-red. Поскольку я получаю обратно JSON, каждый ключ (= имя столбца) разрешен только один раз. Это приводит к перезаписи существующих значений с помощью null отсутствующим набором данных из одной из левых внешних таблиц. Поскольку решения нет, мне определенно нужно переименовать столбцы вручную.

Ответ №1:

Postgres не позволяет вам переименовывать столбцы в массовом порядке. Однако вы можете выбрать столбцы в качестве записей, чтобы вы могли видеть, откуда они берутся:

 select t1, t2, t3
  

Комментарии:

1. Хорошо, интересный обходной путь. Спасибо. … Но имена столбцов отсутствуют ?!

2. @MichaelHecht . , , У вас есть имя записи, а затем у вас есть имя поля в записях.