Postgresql从具有不同列数的2个表中选择多条记录
Posted
技术标签:
【中文标题】Postgresql从具有不同列数的2个表中选择多条记录【英文标题】:Postgresql select multiple records from 2 tables with different number of columns 【发布时间】:2013-05-15 02:50:12 【问题描述】:我在 postgres 数据库中有 2 个表,其中包含以下记录 -:
TableA
======
ID DESC TEAM STATUS
254 NSW emp Sales A
365 NSW,VIC emp Sales L
2345 NSW emp Post Sales A
...........
.....
TableB
======
ID STATE
254 NSW
365 NSW
365 VIC
365 QLD
2345 NT
2345 NSW
...........
我想从 2 个表中为每个唯一 ID 选择 ID, DESC, STATUS and STATE
,并以以下格式捕获输出。
ID DESC STATUS STATE
254 NSW emp A NSW
365 NSW,VIC emp L NSW,VIC,QLD
2345 NSW emp A NT,NSW
.........
尝试将 SELECT 语句与 JOIN/INTERSECT 和 SELECT ARRAY(....... 这失败了“每个 INTERSECT 查询必须具有相同数量的列”
任何想法将不胜感激?
【问题讨论】:
【参考方案1】:SELECT TABLEA.ID,
DESCR,
TEAM,
STATUS,
array_agg(STATE)
FROM TABLEA
inner join TABLEB
ON TABLEA.ID = TABLEB.ID
GROUP BY TABLEA.ID,DESCR,TEAM,STATUS
【讨论】:
您好,感谢您的回答。请不要只发布代码 sn-p,而是稍微解释一下您的解决方案。 内连接——获取我们两个表中与那里的 id 匹配的列的编号... 内连接 -- 获取我们两个表中与id匹配的列的编号...** Group by** ----仅将 1 列的 id 分组,即从 tablea 和 select stmt---从 tableb 中获取状态列...最后是 array_agg---它为您提供获取所有关系在用逗号分隔的一行中....所有这些 r 仅与那里的 id 匹配:-) 玩得很开心...以上是关于Postgresql从具有不同列数的2个表中选择多条记录的主要内容,如果未能解决你的问题,请参考以下文章
Python Pandas - 连接两个具有不同行数和列数的数据框