sql - 从所有行中获取唯一值的单个文本值

标签 sql postgresql

假设我有这些行:

第 1 行 苹果、西瓜、菠萝

第 2 行 苹果、菠萝、橙子

第 3 行 苹果,蓝莓

我想创建从所有行中获取唯一值的单个文本值。

我们如何使用查询来实现?

预期结果:

苹果、西瓜、菠萝、橙子、蓝莓

最佳答案

试试这个:

select array_agg(val) from (
  select distinct unnest(string_to_array(my_column, ',')) val from my_table) x

正在发生的事情的分割:

  • string_to_array() 使用指定的分隔符将字符串拆分为真正的数组
  • unnest() 将一个数组变成单独的行 - 每个元素一个
  • distinct 删除重复行
  • array_agg() 将所有行连接到一个 CSV 字符串中(通常您会使用 group by 子句,但这里不需要,因为只有一个组)<

关于sql - 从所有行中获取唯一值的单个文本值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16555932/

相关文章:

mysql - 如何使用以前的值计算百分比增加/减少

mysql - 如何从 mysql 的 sql_mode 中删除 NO_ZERO_DATE?

mysql - 存储过程中的 CALL 不起作用

sql - 选择最大项目数,获取排名和百分位数

sql - Postgresql 合并行

c++ - inNull(sqlite3_stmt *, int col) 是否有一个 bool 允许我检查它?

ruby-on-rails - 在 Rails 和 PostgreSQL 中用于 Facebook 用户 ID 的数据类型

sql - Postgres 将所有数组值匹配到具有和条件的同一列---更新

postgresql - 如何从 cron.d 运行 cronjob?

asp.net - 网络机器人问题