gpt4 book ai didi

sql - 如何插入不包括某些记录的许多记录

转载 作者:行者123 更新时间:2023-11-29 12:38:11 25 4
gpt4 key购买 nike

我想用主表中的记录子集创建一个表。例如,我有:

id  name   code
1 peter 73
2 carl 84
3 jack 73

我想存储 peter 和 carl 但不存储 jack,因为它们具有相同的 peter 代码。我需要高性能,因为我有 2000 万条记录。

我试试这个:

SELECT id, name, DISTINCT(code) INTO new_tab
FROM old_tab
WHERE (conditions)

但不工作。

最佳答案

假设您想要为每个 code 选择具有最大 id 的行,那么应该这样做:

insert into new_tab (id, name, code) 
(SELECT id, name, code
FROM
(
SELECT id, name, code, rank() as rnk OVER (PARTITION BY code ORDER BY id DESC)
FROM old_tab WHERE rnk = 1
)
)

对于每个代码的最小 id,只需将排名中的排序顺序从 DESC 更改为 ASC:

insert into new_tab (id, name, code) 
(SELECT id, name, code
FROM
(
SELECT id, name, code, rank() as rnk OVER (PARTITION BY code ORDER BY id ASC)
FROM old_tab WHERE rnk = 1
)
)

关于sql - 如何插入不包括某些记录的许多记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17595056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com