Postgresql 在PostgresSQL中,如何编写返回多行和多列的查询

Postgresql 在PostgresSQL中,如何编写返回多行和多列的查询,postgresql,Postgresql,我最初的查询是这样的: SELECT *, (SELECT COUNT(*), user_id FROM user_sessions WHERE company_id=companies.id GROUP BY user_id) as user_sessions FROM companies 这将返回此错误: 错误:用作表达式的子查询返回多行 我发现了一种克服错误的方法: SELECT *, ARRAY (SELECT COUNT(*), user_id FROM user_sessions

我最初的查询是这样的:

SELECT *,
(SELECT COUNT(*), user_id FROM user_sessions WHERE company_id=companies.id GROUP BY user_id) as user_sessions
FROM companies
这将返回此错误:

错误:用作表达式的子查询返回多行

我发现了一种克服错误的方法:

SELECT *,
ARRAY (SELECT COUNT(*), user_id FROM user_sessions WHERE company_id=companies.id GROUP BY user_id) as user_sessions
FROM companies
但它有一个错误:

错误:子查询只能返回一列


如果我从返回的列中删除
COUNT(*)
user\u id
,它将正常工作,但是我需要这两组数据。如何在这样的子查询中返回多个列?

我想连接应该可以做到这一点:

select * from
companies
join
( select count(*), company_id, user_id
  from user_sessions
  group by (company_id, user_id)
) as user_sessions
on companies.id = company_id 

对于将来遇到这种情况的人,最好的点播方式是@Matt在上面的评论中提到的:

COUNT(*)、user\u id
替换为
ARRAY[COUNT(*)、user\u id]

使用
数组[COUNT(*),user\u id]
替换
COUNT(*),user\u id]
,效果非常好。