gpt4 book ai didi

sql - 获取列中逗号分隔值的最大值

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

如何在 Original_Ids 列中获取逗号分隔值的最大值,并在一列中获取最大值,在不同列中获取剩余 ID。

|Original_Ids   | Max_Id| Remaining_Ids |
|123,534,243,345| 534 | 123,234,345 |

更新 -如果我已经有了 Max_id 并且只需要下面的等式?

  Remaining_Ids = Original_Ids - Max_id 

谢谢

最佳答案

由于 Postgres 中数组操作的极好可能性,这可以通过将字符串转换为数组然后从数组转换为集合来相对容易地完成。

然后可以对该集合进行常规查询。使用 max() 可以选择最大值,使用 EXCEPT ALL 可以从集合中删除最大值。

然后可以使用 array_to_string() 将集合转换为数组,然后可以将数组再次转换为定界字符串。

SELECT ids original_ids,
(SELECT max(un.id::integer)
FROM unnest(string_to_array(ids,
',')) un(id)) max_id,
array_to_string(ARRAY((SELECT un.id::integer
FROM unnest(string_to_array(ids,
',')) un(id)
EXCEPT ALL
SELECT max(un.id::integer)
FROM unnest(string_to_array(ids,
',')) un(id))),
',') remaining_ids
FROM elbat;

另一种选择是 regexp_split_to_table() 直接生成一个集合(或 regexp_split_to_array() 但我们有可能的正则表达式开销并且仍然必须将数组转换为集合)。

但是尽管如此,您应该(几乎)永远不要使用定界列表(也不是数组)。使用表格,这(几乎)总是最好的选择。

关于sql - 获取列中逗号分隔值的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52011001/

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