Syntax errors are quite common while coding.
But, things go for a toss when it results in website errors.
PostgreSQL error 42601 also occurs due to syntax errors in the database queries.
At Bobcares, we often get requests from PostgreSQL users to fix errors as part of our Server Management Services.
Today, let’s check PostgreSQL error in detail and see how our Support Engineers fix it for the customers.
What causes error 42601 in PostgreSQL?
PostgreSQL is an advanced database engine. It is popular for its extensive features and ability to handle complex database situations.
Applications like Instagram, Facebook, Apple, etc rely on the PostgreSQL database.
But what causes error 42601?
PostgreSQL error codes consist of five characters. The first two characters denote the class of errors. And the remaining three characters indicate a specific condition within that class.
Here, 42 in 42601 represent the class “Syntax Error or Access Rule Violation“.
In short, this error mainly occurs due to the syntax errors in the queries executed. A typical error shows up as:

Here, the syntax error has occurred in position 119 near the value “parents” in the query.
How we fix the error?
Now let’s see how our PostgreSQL engineers resolve this error efficiently.
Recently, one of our customers contacted us with this error. He tried to execute the following code,
CREATE OR REPLACE FUNCTION prc_tst_bulk(sql text)
RETURNS TABLE (name text, rowcount integer) AS
$$
BEGIN
WITH m_ty_person AS (return query execute sql)
select name, count(*) from m_ty_person where name like '%a%' group by name
union
select name, count(*) from m_ty_person where gender = 1 group by name;
END
$$ LANGUAGE plpgsql;
But, this ended up in PostgreSQL error 42601. And he got the following error message,
ERROR: syntax error at or near "return"
LINE 5: WITH m_ty_person AS (return query execute sql)
Our PostgreSQL Engineers checked the issue and found out the syntax error. The statement in Line 5 was a mix of plain and dynamic SQL. In general, the PostgreSQL query should be either fully dynamic or plain. Therefore, we changed the code as,
RETURN QUERY EXECUTE '
WITH m_ty_person AS (' || sql || $x$)
SELECT name, count(*)::int FROM m_ty_person WHERE name LIKE '%a%' GROUP BY name
UNION
SELECT name, count(*)::int FROM m_ty_person WHERE gender = 1 GROUP BY name$x$;
This resolved the error 42601, and the code worked fine.
[Need more assistance to solve PostgreSQL error 42601?- We’ll help you.]
Conclusion
In short, PostgreSQL error 42601 occurs due to the syntax errors in the code. Today, in this write-up, we have discussed how our Support Engineers fixed this error for our customers.
PREVENT YOUR SERVER FROM CRASHING!
Never again lose customers to poor server speed! Let us help you.
Our server experts will monitor & maintain your server 24/7 so that it remains lightning fast and secure.
GET STARTED
var google_conversion_label = «owonCMyG5nEQ0aD71QM»;
I’m trying to add a column named order to my table. I realize that order is a reserved word in SQL. So, how do I do it?
My command:
alter table mytable add column order integer;
I’ve also tried:
alter table mytable add column 'order' integer;
PostgreSQL 9.1.
![]()
asked Apr 15, 2014 at 19:08
3
Use this:
alter table mytable add column "order" integer;
But, you might want to consider using a non-reserved name instead, like sort_order or something similar that reflects what the column is used for (and isn’t a reserved word).
answered Apr 15, 2014 at 19:12
![]()
jpwjpw
44k6 gold badges67 silver badges85 bronze badges
3
I think you don’t need «column». Plus «order» is a keyword in SQL, so you should use a different name for your column. Follow this syntax:
ALTER TABLE table_name ADD column_name datatype
Source: W3Schools
answered Apr 15, 2014 at 19:14
![]()
DerStrom8DerStrom8
1,3212 gold badges23 silver badges45 bronze badges
ALTER TABLE table_name
ADD COLUMN "order" integer
answered Apr 15, 2014 at 19:13
0
You are using order which is a reserved keyword you should consider renaming that to something like orders. And the problem should go away.
answered Sep 10, 2021 at 7:06
![]()
- Печать
Страницы: [1] Вниз
Тема: Postgres (db error) (Прочитано 18485 раз)
0 Пользователей и 1 Гость просматривают эту тему.
ПРивет!
Решил вот попробовать вашу софтину! Но никак не получается ее завести
Установил POstgresql сервер и ОДБЦ драйвер!
Создал базу данных!
Настроил в подключении парамеры — нажал Тест! Получил Ответ ОК!
Далее залил в базу дамп
Пробую войти и получаю ошибку
BKO.NET 1.7.5.1
Версия базы данных не является эталонной
Вносим изменения в базу …
Жму ОК
Внесение изменений закончилось неудачей, воспользуйтесь конвертором или скриптами
ОК — и программазакрывается!
ЧТо делать ?
Спасибо

Записан
select access from configure
дальше будем смотреть…

Записан
«1.7.3.5»
Я пробовал поменять на 1.7.5.1 — но результат тот же
« Последнее редактирование: 28 Февраль 2014, 10:38:35 от Digitec »

Записан
ALTER TABLE Remont ADD COLUMN GARANT Date;
ALTER TABLE kompy ADD COLUMN MB_NAME varchar(255) Mb;
UPDATE TABLE kompy SET MB_NAME=Mb;
ALTER TABLE kompy DROP COLUMN Mb, nomerPC, TEXT_RED, EXCELL_RED, ACCESS_RED, VG, IG;
ALTER TABLE kompy ADD COLUMN data_sp Date,ADD COLUMN data_nb Date;
Update CONFIGURE SET access='1.7.3.9' WHERE access<>'1.7.3.9';

Записан
ОШИБКА: ошибка синтаксиса (примерное положение: «Mb»)
LINE 2: ALTER TABLE kompy ADD COLUMN MB_NAME varchar(255) Mb;
^
********** Ошибка **********
ОШИБКА: ошибка синтаксиса (примерное положение: «Mb»)
SQL-состояние: 42601
Символ: 94
И кстати при внесении дампа в постгрес имеем две ошибки
ОШИБКА: ошибка синтаксиса (примерное положение: «EXTENSION»)
СТРОКА 1: CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalo…
^
ОШИБКА: ошибка синтаксиса (примерное положение: «EXTENSION»)
СТРОКА 1: COMMENT ON EXTENSION plpgsql IS ‘PL/pgSQL procedural languag…
^
« Последнее редактирование: 28 Февраль 2014, 11:02:03 от Digitec »

Записан
ALTER TABLE kompy ADD COLUMN MB_NAME varchar(255);

Записан
пробуем так
ALTER TABLE Remont ADD COLUMN GARANT Date;
ALTER TABLE kompy ADD COLUMN MB_NAME varchar(255);
UPDATE kompy SET MB_NAME=Mb;
ALTER TABLE kompy DROP COLUMN Mb, nomerPC, TEXT_RED, EXCELL_RED, ACCESS_RED, VG, IG;
ALTER TABLE kompy ADD COLUMN data_sp Date,ADD COLUMN data_nb Date;
Update CONFIGURE SET access=’1.7.3.9′ WHERE access<>’1.7.3.9′;
Получаем
ОШИБКА: ошибка синтаксиса (примерное положение: «nomerPC»)
LINE 4: ALTER TABLE kompy DROP COLUMN Mb, nomerPC, TEXT_RED, EXCELL_…
^
********** Ошибка **********

Записан
Так
Немного поиграв в кашпировского
выполняем такой запрос
ALTER TABLE Remont ADD COLUMN GARANT Date;
ALTER TABLE kompy ADD COLUMN MB_NAME varchar(255);
UPDATE kompy SET MB_NAME=Mb;
ALTER TABLE kompy DROP COLUMN Mb;
ALTER TABLE kompy DROP COLUMN nomerPC;
ALTER TABLE kompy DROP COLUMN TEXT_RED;
ALTER TABLE kompy DROP COLUMN EXCELL_RED;
ALTER TABLE kompy DROP COLUMN ACCESS_RED;
ALTER TABLE kompy DROP COLUMN VG;
ALTER TABLE kompy DROP COLUMN IG;
ALTER TABLE kompy ADD COLUMN data_sp Date,ADD COLUMN data_nb Date;
Update CONFIGURE SET access='1.7.3.9' WHERE access<>'1.7.3.9';
После чего пробуем войти и получаем уже совершенно другую ошибку (на дату ругается)
«Неверный синтаксис для типа date: «»09:33:10»

Записан
так получается что за место даты время…

Записан
Так как бы я это и сам вижу — вопрос в том — что и где поправить и почему оно так?
щас паралельно попробую базу под фрей развернуть

Записан
ну тут вопрос сложный, я дома пробовал все работало… сейчас проверить не могу…

Записан
ка кто можно определить какая это талица вбазе ругается? Я бы попробовал поиграть с параметрами?

Записан
думаю что это таблица kompy

Записан
Итак
есть успехи!
Взял версию 1.7.5.0
И наконецто запустиллось!
Но при входе уже пишет ошибку
колонка name_prog не существует
мои действия?

Записан
В итоге !
Скачал 1.7.3.3 — все завелось!
Мистика!
Вобщем приступаю к изучению — что правда мысль о возможно обновлении версии в будущем немного пугает

Записан
создать колонку name_prog в таблице configure

Записан
- Печать
Страницы: [1] Вверх
Пытаюсь создать табличку, вот такую
CREATE TABLE screens_items ( screenitemid bigint NOT NULL, screenid bigint NOT NULL, resourcetype integer DEFAULT '0' NOT NULL, resourceid bigint DEFAULT '0' NOT NULL, width integer DEFAULT '320' NOT NULL, height integer DEFAULT '200' NOT NULL, x integer DEFAULT '0' NOT NULL, y integer DEFAULT '0' NOT NULL, colspan integer DEFAULT '0' NOT NULL, rowspan integer DEFAULT '0' NOT NULL, elements integer DEFAULT '25' NOT NULL, valign integer DEFAULT '0' NOT NULL, halign integer DEFAULT '0' NOT NULL, style integer DEFAULT '0' NOT NULL, url varchar(255) DEFAULT '' NOT NULL, dynamic integer DEFAULT '0' NOT NULL, sort_triggers integer DEFAULT '0' NOT NULL, application varchar(255) DEFAULT '' NOT NULL, PRIMARY KEY (screenitemid) );
Получаю
Error: ОШИБКА: ошибка синтаксиса (примерное положение: "application")
psql --version psql (PostgreSQL) 9.4.9
Вроде слово «application» не зарезервировано?
Удаление колонок таблицы атрибутов для нескольких слоёв
-
HasT
- Активный участник
- Сообщения: 142
- Зарегистрирован: 16 окт 2009, 22:08
- Проекты: 1
- Репутация: 55
- Откуда: Харьков
Удаление колонок таблицы атрибутов для нескольких слоёв
Приветствую! Есть шейп-слой со следующей структурой таблицы атрибутов:
- layer.jpg (59.68 КБ) 12457 просмотров
— название объекта, уникальный номер для каждого объекта слоя
Необходимо разбить шейп-слой по «названию объекта», но в результирующих слоях в таблице атрибутов должна остаться только колонка с «порядковым номером»:
- result.jpg (50.97 КБ) 12457 просмотров
Разбитие слоя по «названию объекта» сделал в QGIS (Вектор — Управление данными — Разбить векторный слой), удаление «лишнего текста» в названии файлов удалил через коммандер. Как удалить в наборе шейп-слоев из таблицы атрибутов определённую колонку (перебор каждого слоя не предлагать, очень много их…)? Софт: ArcGIS, QGIS, PostGIS, OGR… Спасибо!
-
Petruxin
- Гуру
- Сообщения: 1695
- Зарегистрирован: 14 июн 2011, 16:47
- Статьи: 2
- Проекты: 2
- Репутация: 132
- Ваше звание: Завсегдатай
- Откуда: Череповец
Re: Удаление колонок таблицы атрибутов для нескольких слоёв
Сообщение
Petruxin » 14 дек 2012, 05:51
Доп модуль Table Manager пробовали?
-
rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Статьи: 1
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: Удаление колонок таблицы атрибутов для нескольких слоёв
Сообщение
rhot » 14 дек 2012, 07:28
В PostGIS:
Код: Выделить всё
CREATE TABLE new AS
SELECT number, ST_Multi(ST_Collect(the_geom))
FROM
(SELECT name, number, (ST_Dump(geom)).geom AS the_geom
FROM region) AS r
GROUP BY name;
SELECT Populate_Geometry_Columns('new'::regclass);
Вместо ST_Collect можно использовать ST_Union, если хотите, чтобы удалились общие границы между полигонами с одинаковым полем NAME.
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} _ Знание сила ¸.·´¯)¸.·´¯)___________
-
HasT
- Активный участник
- Сообщения: 142
- Зарегистрирован: 16 окт 2009, 22:08
- Проекты: 1
- Репутация: 55
- Откуда: Харьков
Re: Удаление колонок таблицы атрибутов для нескольких слоёв
Сообщение
HasT » 14 дек 2012, 10:56
Petruxin писал(а):Доп модуль Table Manager пробовали?
Table Manager не подходит. С ним нужно каждый слой (слоёв будет не менее 700) просматривать и удалять ненужное поле.
-
HasT
- Активный участник
- Сообщения: 142
- Зарегистрирован: 16 окт 2009, 22:08
- Проекты: 1
- Репутация: 55
- Откуда: Харьков
Re: Удаление колонок таблицы атрибутов для нескольких слоёв
Сообщение
HasT » 14 дек 2012, 11:05
rhot писал(а):В PostGIS:
Код: Выделить всё
CREATE TABLE new AS SELECT number, ST_Multi(ST_Collect(the_geom)) FROM (SELECT name, number, (ST_Dump(geom)).geom AS the_geom FROM region) AS r GROUP BY name; SELECT Populate_Geometry_Columns('new'::regclass);Вместо ST_Collect можно использовать ST_Union, если хотите, чтобы удалились общие границы между полигонами с одинаковым полем NAME.
Запустил данный запрос в pgAdmin, но в строке
получил ошибку «колонка «geom» не существует», — заменил «geom» на «the_geom». Далее в строке
получаю ошибку «колонка «r.number» должна фигурировать в предложении GROUP BY или использоваться в агрегатной функции». Как быть дальше?
-
rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Статьи: 1
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: Удаление колонок таблицы атрибутов для нескольких слоёв
Сообщение
rhot » 14 дек 2012, 11:15
HasT писал(а):Как быть дальше?
Я вас, наверное, не правильно понял. Вы хотите из одного слоя получить несколько, разбитых по полю NAME?
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} _ Знание сила ¸.·´¯)¸.·´¯)___________
-
HasT
- Активный участник
- Сообщения: 142
- Зарегистрирован: 16 окт 2009, 22:08
- Проекты: 1
- Репутация: 55
- Откуда: Харьков
Re: Удаление колонок таблицы атрибутов для нескольких слоёв
Сообщение
HasT » 14 дек 2012, 11:18
rhot писал(а):
HasT писал(а):Как быть дальше?
Я вас, наверное, не правильно понял. Вы хотите из одного слоя получить несколько, разбитых по полю NAME?
Да. Нужно из одного слоя сделать несколько, разбитых по полю Name, при этом в новых слоях не должно остаться поля Name.
-
HasT
- Активный участник
- Сообщения: 142
- Зарегистрирован: 16 окт 2009, 22:08
- Проекты: 1
- Репутация: 55
- Откуда: Харьков
Re: Удаление колонок таблицы атрибутов для нескольких слоёв
Сообщение
HasT » 14 дек 2012, 11:33
В базу данных PostGIS залил все разбитые слои по полю Name. Может как-то используя запрос
Код: Выделить всё
ALTER TABLE [u]"все таблицы"[/u] DROP COLUMN "NAME";
можно удалить ненужное поле? только как задать все таблицы в базе для этого запроса?…
-
rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Статьи: 1
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: Удаление колонок таблицы атрибутов для нескольких слоёв
Сообщение
rhot » 14 дек 2012, 11:35
Тогда у меня ещё вопрос: а зачем это надо? Ведь можно при добавлении слоя сделать выборку по атрибутам, а само поле name скрыть через меню «свойства слоя».
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} _ Знание сила ¸.·´¯)¸.·´¯)___________
-
rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Статьи: 1
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: Удаление колонок таблицы атрибутов для нескольких слоёв
Сообщение
rhot » 14 дек 2012, 11:43
HasT писал(а):В базу данных PostGIS залил все разбитые слои по полю Name. Может как-то используя запрос
Код: Выделить всё
ALTER TABLE [u]"все таблицы"[/u] DROP COLUMN "NAME";можно удалить ненужное поле? только как задать все таблицы в базе для этого запроса?…
Вам следует создать функцию, а потом вызвать её.
Код: Выделить всё
CREATE OR REPLACE FUNCTION test()
RETURNS VOID
AS $$
DECLARE
my_row RECORD;
BEGIN
FOR my_row IN
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'information_schema'
LOOP
ALTER TABLE my_row.table_name DROP COLUMN "NAME";
END LOOP;
END;
$$ LANGUAGE plpgsql;
SELECT test();
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} _ Знание сила ¸.·´¯)¸.·´¯)___________
-
HasT
- Активный участник
- Сообщения: 142
- Зарегистрирован: 16 окт 2009, 22:08
- Проекты: 1
- Репутация: 55
- Откуда: Харьков
Re: Удаление колонок таблицы атрибутов для нескольких слоёв
Сообщение
HasT » 14 дек 2012, 11:52
rhot писал(а):Тогда у меня ещё вопрос: а зачем это надо? Ведь можно при добавлении слоя сделать выборку по атрибутам, а само поле name скрыть через меню «свойства слоя».
слой создается в БД несколькими пользователями, затем будет производится дальнейшая его «обработка» несколькими операторами в проприетарном ПО, которое загружает слои только с определенной таблицей атрибутов
-
HasT
- Активный участник
- Сообщения: 142
- Зарегистрирован: 16 окт 2009, 22:08
- Проекты: 1
- Репутация: 55
- Откуда: Харьков
Re: Удаление колонок таблицы атрибутов для нескольких слоёв
Сообщение
HasT » 14 дек 2012, 12:40
rhot писал(а):Вам следует создать функцию, а потом вызвать её.
Код: Выделить всё
CREATE OR REPLACE FUNCTION test() RETURNS VOID AS $$ DECLARE my_row RECORD; BEGIN FOR my_row IN SELECT table_name FROM information_schema.tables WHERE table_schema = 'information_schema' LOOP ALTER TABLE my_row.table_name DROP COLUMN "NAME"; END LOOP; END; $$ LANGUAGE plpgsql; SELECT test();
Сделал функцию test(), только из-за ошибки «схема «my_row» не существует» поменял «my_row» на «public». При запуске запроса
получаю ошибку «отношение «public.table_name» не существует». Что я делаю неправильно?
-
rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Статьи: 1
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: Удаление колонок таблицы атрибутов для нескольких слоёв
Сообщение
rhot » 14 дек 2012, 13:04
Код: Выделить всё
CREATE OR REPLACE FUNCTION test()
RETURNS VOID
AS $$
DECLARE
my_row RECORD;
BEGIN
FOR my_row IN
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'information_schema'
LOOP
EXECUTE 'ALTER TABLE' || my_row.table_name || 'DROP COLUMN "NAME"';
END LOOP;
END;
$$ LANGUAGE plpgsql;
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} _ Знание сила ¸.·´¯)¸.·´¯)___________
-
HasT
- Активный участник
- Сообщения: 142
- Зарегистрирован: 16 окт 2009, 22:08
- Проекты: 1
- Репутация: 55
- Откуда: Харьков
Re: Удаление колонок таблицы атрибутов для нескольких слоёв
Сообщение
HasT » 14 дек 2012, 13:20
rhot писал(а):
Код: Выделить всё
CREATE OR REPLACE FUNCTION test() RETURNS VOID AS $$ DECLARE my_row RECORD; BEGIN FOR my_row IN SELECT table_name FROM information_schema.tables WHERE table_schema = 'information_schema' LOOP EXECUTE 'ALTER TABLE' || my_row.table_name || 'DROP COLUMN "NAME"'; END LOOP; END; $$ LANGUAGE plpgsql;
Пробую этот запрос… my_row — это же название схемы (у меня схема public)?
Для запроса получаю ошибку
Код: Выделить всё
ОШИБКА: ошибка синтаксиса (примерное положение: "TABLEinformation_schema_catalog_nameDROP")
LINE 1: ALTER TABLEinformation_schema_catalog_nameDROP COLUMN "Polyg...
^
QUERY: ALTER TABLEinformation_schema_catalog_nameDROP COLUMN "PolygonID"
CONTEXT: PL/pgSQL function test() line 10 at оператор EXECUTE
И в базе сейчас загружены слои разбитые по полю Name, правильно?
-
rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Статьи: 1
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: Удаление колонок таблицы атрибутов для нескольких слоёв
Сообщение
rhot » 14 дек 2012, 13:35
my_row здесь — это любая запись из списка ваших таблиц.
А вообще, почитайте это.
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} _ Знание сила ¸.·´¯)¸.·´¯)___________
|
|
|
|

информация о разделе
![]() |
Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных — обсуждаем в разделе «Базы данных: общие вопросы». Убедительная просьба — соблюдать «Правила форума» и не пренебрегать «Правильным оформлением своих тем». Прежде, чем создавать тему, имеет смысл заглянуть в раздел «Базы данных: FAQ», возможно там уже есть ответ. |

UPDATE SELECT
, PostgreSQL 9.4
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
|
|
Senior Member
Рейтинг (т): 13 |
create table t1 (id integer, f1 integer, f2 integer); create table t2 (f1 integer, f2 integer); update t1 set (f1, f2) = (select t2.f1, t2.f2 from t1 right join t2 on t1.id = t2.f1);
[Err] ОШИБКА: ошибка синтаксиса (примерное положение: «SELECT») |
|
grgdvo |
|
|
Member
Рейтинг (т): 21 |
какая версия PG у вас?? Такой синтаксис только начиная с 9.5 |
|
HighMan |
|
|
Senior Member
Рейтинг (т): 13 |
Цитата grgdvo @ 22.03.16, 20:20
Я в топе указал, что PostgreSQL 9.4. |
MIF |
|
|
Попробуй такой запрос:
update t1 set t1.f1= t2.f1, t1.f2 = t2.f2 from t1 right join t2 on t1.id = t2.f1 |
|
grgdvo |
|
|
Member
Рейтинг (т): 21 |
MIF, t1 нельзя указывать и под UPDATE и под FROM. HighMan, попробуйте вот так, вроде эквивалентно
update t1 set (f1, f2) = (t2.f1, t2.f2) from t2 where t1.id = t2.f1; |
|
HighMan |
|
|
Senior Member
Рейтинг (т): 13 |
update t1 set (f1, f2) = (t2.f1, t2.f2) from t2 where t1.id = t2.f1; Такой способ работает, но я не представляю как подобным запросом обрабатывать связи таблиц источников. |
|
grgdvo |
|
|
Member
Рейтинг (т): 21 |
Вы можете делать JOIN практически также как в SELECT. Например
update t1 set (f1, f2) = (t2.f1, t2.f2) from t2, t3 where t1.id = t2.f1 and t2.f2 = t3.id;
update t1 set (f1, f2) = (t2.f1, t2.f2) from t2 left join t3 on t2.f2 = t3.id where t1.id = t2.f1; |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- Базы данных: SQL
- Следующая тема
[ Script execution time: 0,0571 ] [ 15 queries used ] [ Generated: 30.01.23, 16:30 GMT ]



