Reputation: 1
I have two tables. I am trying to update the state code in the first wherever it is incorrect (>2 characters)by linking it to another table via the zip code.
I keep getting errors in my code that the join is not properly ended - I have been staring at it for over two hours - it seems so straightforward but I just can't see the mistake?
Table Name – ATEST
ZIP CITY ST1
19090 WILLOW GROVE PA
19091 MEDIA PA
19092 PHILADELPHIA PA
19093 PHILATEST PENN
19094 WOODLYN PA
95123 SAN JOSE CA
95124 SAN JOSETEST CAA
Table Name – AZIP_INFO
ZIP CITY ST
19090 WILLOW GROVE PA
19091 MEDIA PA
19092 PHILADELPHIA PA
19093 PHILATEST PA
19094 WOODLYN PA
95123 SAN JOSE CA
95124 SAN JOSETEST CA
UPDATE /*+ parallel(2) */ ATEST
SET (ATEST.ST1) = (AZIP_INFO.ST)
INNER JOIN (ATEST.ZIP) = AZIP_INFO.ZIP)
ON (TRIM (ATEST.ZIP) = AZIP_INFO.ZIP)
WHERE LENGTH(ATEST.ST1) > 2
Thanks in advance for any help you can give!
Upvotes: 0
Views: 34
Reputation: 1270733
Your hint just reeks of Oracle, which does not support JOIN
s in UPDATE
s (for most purposes).
You can do:
UPDATE ATEST a
SET a.ST1 = (SELECT ai.ST
FROM AZIP_INFOR ai
WHERE a.ZIP = ai.ZIP
)
WHERE EXISTS (SELECT 1
FROM AZIP_INFOR ai
WHERE a.ZIP = ai.ZIP
)
WHERE LENGTH(a.ST1) > 2;
Upvotes: 1
Reputation: 1632
Can you try this?
UPDATE ATEST
SET ATEST.ST1 = AZIP_INFO.ST
FROM ATEST
INNER JOIN AZIP
ON TRIM(ATEST.ZIP) = AZIP_INFO.ZIP
WHERE LENGTH(ATEST.ST1) > 2
Upvotes: 1