我正在尝试使用Knex使用子查询创建以下查询:
SELECT
t.*,
(SELECT COUNT(*) FROM team_users tu WHERE TeamID = t.ID) AS UserCount,
(SELECT COUNT(*) FROM team_access ta WHERE TeamID = t.ID) AS AppCount
FROM teams t WHERE OwnerUserID = _UserID;
Run Code Online (Sandbox Code Playgroud)
结果应该是team表,其中包含来自不同表的UserCount和AppCount的计数聚合(team_users,team_access)
id | Name | OwnerUserID | UserCount | AppCount
-----------------------------------------------------
134| Team A | 1538 | 7 | 6
135| Team B | 1538 | 4 | 2
136| Team C | 1538 | 12 | 1
Run Code Online (Sandbox Code Playgroud)
我认为是一个等效的knex实现是:
var subquery1 = Knex.knex('team_users').count('*').where('TeamID', 'teams.ID').as('UserCount');
var subquery2 = Knex.knex('team_access').count('*').where('TeamID', …Run Code Online (Sandbox Code Playgroud)