Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
24.05.2019, 21:37
|
|||
---|---|---|---|
Помогите найти ошибку в запросе update |
|||
#18+
Что-то я не понимаю, что не нравится PostreSQL. Гугл тоже ничего полезного не говорит. Версия: PostgreSQL 9.6.13 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
2 первых подзапроса в функции отрабатывают нормально. На последнем ругается: "ERROR: column "t" of relation "temp_folder_tag" does not exist LINE 2: t.folder_tag_id = f.folder_tag_id ^ QUERY: UPDATE temp_folder_tag as t SET t.folder_tag_id = f.folder_tag_id FROM spr_folder_tags as f WHERE t.folder_tag_value = f.folder_tag_value". Не понимаю, почему алиас "t" считается колонкой? Пробовал другой алиас, та же фигня. --- Проходя мимо разложенных граблей, ты теряешь драгоценный опыт. (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.05.2019, 21:44
|
|||
---|---|---|---|
Помогите найти ошибку в запросе update |
|||
#18+
Megabyte, потому что таков синтаксис update. Алиасу там не место. set column_name - строго имя колонки обновляемой таблицы. Здесь нет и не может быть неоднозначности, update в postgresql обновляет строки только одной таблицы. Синтаксис set column_name.attribute = - это про композитные типы данные. При этом перед точкой стоит именно имя поля таблицы, в котором сохранены данные композитного типа. Поэтому вы и получаете ошибку о том, что поля такого не существует в этой таблице. https://www.postgresql.org/docs/current/sql-update.html Do not include the table's name in the specification of a target column — for example, UPDATE table_name SET table_name.col = 1 is invalid. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
24.05.2019, 21:49
|
|||
---|---|---|---|
Помогите найти ошибку в запросе update |
|||
#18+
MelkijMegabyte, потому что таков синтаксис update. Алиасу там не место. set column_name - строго имя колонки обновляемой таблицы. Здесь нет и не может быть неоднозначности, update в postgresql обновляет строки только одной таблицы. Синтаксис set column_name.attribute = - это про композитные типы данные. При этом перед точкой стоит именно имя поля таблицы, в котором сохранены данные композитного типа. Поэтому вы и получаете ошибку о том, что поля такого не существует в этой таблице. https://www.postgresql.org/docs/current/sql-update.html Do not include the table's name in the specification of a target column — for example, UPDATE table_name SET table_name.col = 1 is invalid. Спасибо за пояснение. Разобрался. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=53&mobile=1&tid=1995191]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
26ms |
others: | 276ms |
total: | 450ms |
0 / 0 |