Ошибка AWS: недопустимая операция: имя таблицы "?"указано более одного раза; - PullRequest
0 голосов
/ 29 ноября 2018

приведенный ниже код очень хорошо работает в SQL Server 2012, но при его использовании в веб-службе Amazon Amazon выдает ошибку «Неверная операция Amazon: имя таблицы« #t »указано более одного раза;«

CREATE TABLE #t (store_id varchar(20),city varchar(20),[state] varchar(20));
INSERT INTO #t VALUES
('22', 'new', 'NY'),
('22', null, null),
('22', null, null),
('33', null, null),
('33', 'LA', 'CA')
;

SELECT DISTINCT store_id, city, [state] 
INTO #unique
FROM #t WHERE city IS NOT NULL;
;

UPDATE #t
SET city = #unique.city, [state] = #unique.[state]
FROM #unique
INNER JOIN #t
ON #unique.store_id = #t.store_id
WHERE #t.city IS NULL

Кто-нибудь знает, почему и изменил мой код?Спасибо.

1 Ответ

0 голосов
/ 30 ноября 2018

Вот, пожалуйста,

UPDATE #t
SET city = #unique.city, [state] = #unique.[state]
FROM #unique
WHERE #unique.store_id = #t.store_id
AND #t.city IS NULL

Redshift не нуждается в целевой таблице в предложении FROM, но в случае, если вам нужно указать ее, вам нужно указать ее псевдоним.

UPDATE #t
SET city = #unique.city, [state] = #unique.[state]
FROM #unique
JOIN #t t1
ON #unique.store_id = t1.store_id
WHERE t1.city IS NULL

Из документации

If you need to include the target table of the UPDATE statement in the list, use an alias.

https://docs.aws.amazon.com/redshift/latest/dg/r_UPDATE.html

...