SQL 根据 BQ 中的二级 table 更新
SQL Update based on secondary table in BQ
我有2个table,第一个包含主体信息,第二个包含国家命名规则的信息。在信息 table 中,国家/地区由名称标识,我想更新此字符串以包含命名约定 table 中包含的 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 之间的更新之外做了一个内部连接,以确保值是 compatable 并且它 returns 是正确的值,关于它为什么不正确的任何想法正在更新?
下面列出了用于验证结果的联接以及结果:
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
这不完全是一个答案。但是您的测试可能还不够。您需要检查值 不匹配的地方 。所以,对于 return 那些:
select tv.*
from `db.catagory.test_votes_ds` tv left join
`db.catagory.ISO-Alpha` a
on LOWER(tv.country) = LOWER(a.Country)
where a.Country IS NULL;
我怀疑您会发现不匹配的国家/地区。因此,当您 运行 更新时,匹配项会在第一时间发生变化。然后不匹配项永远不会改变。
我有2个table,第一个包含主体信息,第二个包含国家命名规则的信息。在信息 table 中,国家/地区由名称标识,我想更新此字符串以包含命名约定 table 中包含的 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 之间的更新之外做了一个内部连接,以确保值是 compatable 并且它 returns 是正确的值,关于它为什么不正确的任何想法正在更新?
下面列出了用于验证结果的联接以及结果:
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
这不完全是一个答案。但是您的测试可能还不够。您需要检查值 不匹配的地方 。所以,对于 return 那些:
select tv.*
from `db.catagory.test_votes_ds` tv left join
`db.catagory.ISO-Alpha` a
on LOWER(tv.country) = LOWER(a.Country)
where a.Country IS NULL;
我怀疑您会发现不匹配的国家/地区。因此,当您 运行 更新时,匹配项会在第一时间发生变化。然后不匹配项永远不会改变。