我无法用我的SQL版本找到当前问题的答案,所以希望有人可以帮助我。
我使用MySQL和SQLPro作为客户端,或者我可以使用PostgreSQL pgAdmin 4。
我试图用以前的null
更新not null value
值。
这是我的表:
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
如何用null
填充not null values
值,以便address/ID
分组在我的列上保持不变?
谢谢!!!
如果你想更新表格,这将在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;
您可以尝试自己更新表。我将您的表插入到我在postgres中创建的用户表中:
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匹配。确保您只更新NULL users.id。