sql - PostgreSQL 多于一行由用作表达式的子查询返回
问题描述
运行PostgreSQL 9.6
。我正在尝试输出由一个值和一个名称列表组成的行。这是我的查询:
SELECT name, (SELECT car_name FROM cars WHERE user = id)
FROM users WHERE user_id = 1 ORDER BY name;
但它失败了:
ERROR: more than one row returned by a subquery used as an expression
这当然是有道理的,但我希望将嵌套查询输出为列表或json
. 我试过了row_to_json
,但也失败了。
解决方案
使用聚合函数,例如string_agg()
or json_agg()
:
SELECT name,
(SELECT string_agg(car_name) FROM cars WHERE user = id)
FROM users
WHERE user_id = 1
ORDER BY name;
推荐阅读
- c - 无法弄清楚为什么 strlen 会破坏 C 中的字符数组
- mysql - 如果表 B 上不存在键,则从表 A 中插入 CASCADE
- database - 使用 For 循环插入数据时出现无法识别的数据库格式错误
- python - pandas table.loc lambda 函数无法根据条件对表进行切片
- python - 将 shell 输出转换为 Django 模型的方法
- javascript - Enter 键上的输入 eventListener 继续循环
- ethereum - 什么是地址(1)?
- javascript - 传单未能关注地图到标记坐标
- java - 带有私有 java 构造函数的 Kotlin 顶级函数
- python - 华宇网格搜索功能