【发布时间】:2021-09-19 19:26:38
【问题描述】:
我有 2 个表格,1 个包含信息主体,第二个包含有关国家命名约定的信息。在信息表中,国家由名称标识,我想更新此字符串以包含一个 ISO alpha 3 值,该值包含在命名约定表中。例如转向“英国”->“GBR”
我编写了以下查询来进行更新,但它会影响 0 行
UPDATE
`db.catagory.test_votes_ds`
SET
`db.catagory.test_votes_ds`.country = `db.catagory.ISO-Alpha`.Alpha_3_code
FROM
`db.catagory.ISO-Alpha`
WHERE
`LOWER(db.catagory.ISO-Alpha`.Country) = LOWER(`db.catagory.test_votes_ds`.country)
我已经在 2 之间的更新之外进行了内部连接,以确保这些值是兼容的并且它返回正确的值,关于它为什么不更新的任何想法?
下面列出了用于验证结果的连接以及结果:
SELECT
`db.catagory.test_votes_ds`.country, `db.catagory.ISO-Alpha`.Alpha_3_code
from
`db.catagory.test_votes_ds`
inner join
`db.catagory.ISO-Alpha`
on
LOWER(`db.catagory.test_votes_ds`.country) = LOWER(`db.catagory.ISO-Alpha`.Country)
1,Ireland,IRL
2,Australia,AUS
3,United States,USA
4,United Kingdom,GBR
【问题讨论】:
-
。 .该代码应该可以工作。编辑您的问题并显示您用于验证匹配的
SELECT查询。 -
我已经用连接查询更新了它^^
-
。 .在
update中也使用lower()。 -
我不知道为什么我错过了原始代码,但当前代码在该行中使用了 Lower 并且仍然没有返回任何内容,我再次更新了帖子以反映这一点。
标签: sql google-bigquery dml