Обновление значение столбца таблицы ClickHouse из другой таблицы

Нужно из одной таблицы ClickHouse заполнить столбец 'region_name' из другой bp из столбца geo, при условии совпадения значений в столбцах region_id и lr_ya.

Обновляемая таблица:

for_geo_pos.all_serp_ya_m_tmp со столбцами region_name, region_id

Таблица "донор":

for_geo_pos.geo_info со столбцами geo, lr_ya

Пробовал запросы:

ALTER TABLE for_geo_pos.all_serp_ya_m_tmp 
UPDATE 
    region_name = g.geo 
FROM 
    for_geo_pos.geo_info AS g 
WHERE 
    all_serp_ya_m_tmp.region_id = g.lr_ya;

Отдает ошибку:

SQL Error [62] [07000]: Code: 62. DB::Exception: Syntax error: failed at position 80 ('FROM') (line 4, col 1): FROM 
    for_geo_pos.geo_info AS g 
WHERE 
    all_serp_ya_m_tmp.region_id = g.lr_ya. Expected one of: token, Dot, OR, AND, IS NOT DISTINCT FROM, IS NULL, IS NOT NULL, BETWEEN, NOT BETWEEN, LIKE, ILIKE, NOT LIKE, NOT ILIKE, REGEXP, IN, NOT IN, GLOBAL IN, GLOBAL NOT IN, MOD, DIV, Comma, IN PARTITION, WHERE. (SYNTAX_ERROR) (version 24.3.2.23 (official build))
, server ClickHouseNod

И

MERGE INTO for_geo_pos.all_serp_ya_m_tmp AS target
USING for_geo_pos.geo_info AS source
ON target.region_id = source.lr_ya
WHEN MATCHED THEN 
    UPDATE 
    SET target.region_name = source.geo;

Ошибка:

SQL Error [62] [07000]: Code: 62. DB::Exception: Syntax error: failed at position 1 ('MERGE') (line 1, col 1): MERGE INTO for_geo_pos.all_serp_ya_m_tmp AS target
USING for_geo_pos.geo_info AS source
ON target.region_id = source.lr_ya
WHEN MATCHED THEN 
    UPDATE 
 . Expected one of: Query, Query with output, EXPLAIN, EXPLAIN, SELECT query, possibly with UNION, list of union elements, SELECT query, subquery, possibly with UNION, SELECT subquery, SELECT query, WITH, FROM, SELECT, SHOW CREATE QUOTA query, SHOW CREATE, SHOW [FULL] [TEMPORARY] TABLES|DATABASES|CLUSTERS|CLUSTER|MERGES 'name' [[NOT] [I]LIKE 'str'] [LIMIT expr], SHOW, SHOW COLUMNS query, SHOW ENGINES query, SHOW ENGINES, SHOW FUNCTIONS query, SHOW FUNCTIONS, SHOW INDEXES query, SHOW SETTING query, SHOW SETTING, EXISTS or SHOW CREATE query, EXISTS, DESCRIBE FILESYSTEM CACHE query, DESCRIBE, DESC, DESCRIBE query, SHOW PROCESSLIST query, SHOW PROCESSLIST, CREATE TABLE or ATTACH TABLE query, CREATE, ATTACH, REPLACE, CREATE DATABASE query, CREATE VIEW query, CREATE DICTIONARY, CREATE LIVE VIEW query, CREATE WINDOW VIEW query, ALTER query, ALTER TABLE, ALTER TEMPORARY TABLE, ALTER DATABASE, RENAME query, RENAME DATABASE, RENAME TABLE, EXCHANGE TABLES, RENAME DICTIONARY, EXCHANGE DICTIONARIES, RENAME, DROP query, DROP, DETACH, TRUNCATE, UNDROP query, UNDROP, CHECK ALL TABLES, CHECK TABLE, KILL QUERY query, KILL, OPTIMIZE query, OPTIMIZE TABLE, WATCH query, WATCH, SHOW ACCESS query, SHOW ACCESS, ShowAccessEntitiesQuery, SHOW GRANTS query, SHOW GRANTS, SHOW PRIVILEGES query, SHOW PRIVILEGES, BACKUP or RESTORE query, BACKUP, RESTORE, INSERT query, INSERT INTO, USE query, USE, SET ROLE or SET DEFAULT ROLE query, SET ROLE DEFAULT, SET ROLE, SET DEFAULT ROLE, SET query, SET, SYSTEM query, SYSTEM, CREATE USER or ALTER USER query, ALTER USER, CREATE USER, CREATE ROLE or ALTER ROLE query, ALTER ROLE, CREATE ROLE, CREATE QUOTA or ALTER QUOTA query, ALTER QUOTA, CREATE QUOTA, CREATE ROW POLICY or ALTER ROW POLICY query, ALTER POLICY, ALTER ROW POLICY, CREATE POLICY, CREATE ROW POLICY, CREATE SETTINGS PROFILE or ALTER SETTINGS PROFILE query, ALTER SETTINGS PROFILE, ALTER PROFILE, CREATE SETTINGS PROFILE, CREATE PROFILE, CREATE FUNCTION query, DROP FUNCTION query, CREATE NAMED COLLECTION, DROP NAMED COLLECTION query, Alter NAMED COLLECTION query, ALTER, CREATE INDEX query, DROP INDEX query, DROP access entity query, MOVE access entity query, MOVE, GRANT or REVOKE query, REVOKE, GRANT, EXTERNAL DDL query, EXTERNAL DDL FROM, TCL query, BEGIN TRANSACTION, START TRANSACTION, COMMIT, ROLLBACK, SET TRANSACTION SNAPSHOT, Delete query, DELETE. (SYNTAX_ERROR) (version 24.3.2.23 (official build))

Ответы (1 шт):

Автор решения: Roman C

Неправильный синтаксис SQL в команде UPDATE. Правильно будет

UPDATE 
   all_serp_ya_m_tmp AS s
SET
    region_name = (SELECT TOP 1 g.geo 
FROM 
    for_geo_pos.geo_info AS g 
WHERE 
    s.region_id = g.lr_ya
)
→ Ссылка