#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 . , , У вас есть имя записи, а затем у вас есть имя поля в записях.