sql - 返回与一行相同 id 的值
问题描述
抱歉,如果这个问题已经得到解答,但试图说出这个问题是让我头疼的噩梦。
基本上我有一张桌子
post_id | tag_id |
---|---|
15618 | 6 |
15618 | 109 |
15618 | 659 |
27248 | 245 |
27248 | 6 |
27248 | 7 |
27248 | 6499 |
我本质上想要一个返回的查询
post_id | tag_id |
---|---|
15618 | 6、109、659 |
27248 | 245、6、7、6499 |
解决方案
我强烈建议您为此使用数组:
select post_id, array_agg(tag_id order by tag_id)
from t
group by post_id;
如果你真的想要一个字符串,你可以使用。string_agg(tag_id, ', ' order by tag_id)
不过,总的来说,我发现数组更加通用。
推荐阅读
- scons - 如何为所有 SCons 构建变体设置重复 = 0,而不在每个 SConscript 调用中多次重复该选项?
- python - Python 中的迄今为止的字符串(00Z 1983 年 2 月 26 日至 00-26-02-83)
- python-3.x - 使用 Pandas 数据框中的唯一值从 python 发送电子邮件
- json - 正则表达式匹配复杂的 JSON 值
- javascript - 将一行中的 4 列居中对齐并响应
- c++ - OpenCL 减少内核只返回一个值
- sql - Spring Boot JPA 从返回的查询值映射数组
- database - SQL 插入错误:无法将值 NULL 插入“Id”列
- java - 使用特定元素的索引从另一个列表中获取项目(lambda 表示法)
- javascript - 使用javascript按类型和字段获取元素?