一对多连接在 postgres 中返回单行

Posted

技术标签:

【中文标题】一对多连接在 postgres 中返回单行【英文标题】:One to Many join returns single row in postgres 【发布时间】:2017-08-21 10:29:55 【问题描述】:

我尝试浏览了许多页面,但无法找到我的问题的结果。需要以下场景的解决方案,当前使用需要一些增强的左连接。

例如:

【问题讨论】:

您使用的是 mysql 还是 Postgresql?不要标记未涉及的产品。 并向我们展示您当前的查询尝试。 感谢@jarlh,我正在使用 postgresql,这是当前查询,从 Table_1 t 中选择 t.PKID 作为 ID,t.DATA 作为 DATA,t.U_DATA 作为 DATA,t.U_VALUE 作为 VALUE left join Table_2 v on t.PKID = v.PKID_FROM_TABLE_1 where t.text = 'text'; 请阅读meta.***.com/questions/285551/… 和接受的答案 【参考方案1】:

一种方法是条件聚合:

SELECT PKID_FROM_TABLE_1,
       MAX(CASE WHEN U_DATA = 'unique0' THEN U_VALUE END) as unique0,
       MAX(CASE WHEN U_DATA = 'unique1' THEN U_VALUE END) as unique1,
       MAX(CASE WHEN U_DATA = 'unique2' THEN U_VALUE END) as unique2,
       MAX(CASE WHEN U_DATA = 'unique3' THEN U_VALUE END) as unique3,
       MAX(CASE WHEN U_DATA = 'unique4' THEN U_VALUE END) as unique4
FROM example
GROUP BY PKID_FROM_TABLE_1;

这是 ANSI 标准 SQL,适用于大多数数据库。

【讨论】:

以上是关于一对多连接在 postgres 中返回单行的主要内容,如果未能解决你的问题,请参考以下文章

一对多 SQL SELECT 到单行

AWS Amplify GraphQL - 一对多连接在查询时返回空列表

Postgres:用于一对多搜索的浮点数组的余弦相似度索引

MySQL - 一对多连接 - 从“一个”表中仅返回 1 行的结果

LINQ 如何在一对多连接中指定选择某些列

使用 JDBC 在一对多中获取“多”