在我的SQL版本中,我找不到当前问题的答案,所以希望有人能帮助我。
我使用带有SQLPro的MySQL作为客户端,或者我可以使用PostgreSQL pgAdmin 4。
场景我正在尝试用以前的not null value更新一个null值。
下面是我的表格:
primary_id name address id
1 bob 123 main 100
2 jane 123 main NULL
3 mike 217 2nd 200
4 jeff 217 2nd NULL

如何使用not null values填充null值,以使address/ID分组在我的列中保持不变?
谢谢!
发布于 2017-12-26 04:40:51
如果您想要更新表,这将在Postgres中工作:
update t
set id = (select t2.id
from t t2
where t2.address = t.address and t2.id is not null
fetch first 1 row only
)
where id is null;在MySQL中,这将起作用:
update t join
(select address, max(id) as max_id
from t
group by address
) tt
on t.address = tt.address
set t.id = tt.max_id
where t.id is null;发布于 2017-12-26 04:59:29
您可以尝试使用自身更新表。我将您的表插入到我在postgres中创建的users表中:
UPDATE users
SET
id = _users.id
FROM
(
SELECT DISTINCT
address,
id
FROM users
WHERE id IS NOT NULL
GROUP BY
address,
id
) _users
WHERE
_users.address = users.address
AND users.id IS NULL;所以我的想法是获取所有非空的地址和id组(假设地址总是与相同的id配对)。我称其为_users。
将_users.address与您的原始users.address进行匹配。确保您仅更新空users.id。
https://stackoverflow.com/questions/47971758
复制相似问题