按不可连接列中的最大值左连接 1:M 关系

Left join on 1:M relation by maximum value in non joinable column

我正在使用 SQL.

在 PostgreSQL 数据库上解决此类问题

我有 2 个 table,为简单起见,假设它们只有这些列并且具有 1:M 关系。

Table答:

Name Type Note
id long primary key
state string string holding enum value (for simplicity assume values X,Y,Z

Table乙:

Name Type Note
id long primary key
a_id long foreign key to A table
max long column holding maximum of bid
user_id long user who bid this bid

我对 SQL 结果的期望:

Select 所有 table 处于状态 Z 和 table B 的 user_id 的 A id 记录了 最高,user_id等于1(所以如果tableB中有3条记录的最大列值为(1,2,3),则select 最大值为 3)

的行

业务要求进一步说明问题:

获取所有 A table 行 ID,它们处于状态 Z 并且具有某个变量 ID(为简单起见,假设为 1)的用户在 table B 中的所有子项中具有最大值。

我试着在 a.id = b.a_id 上做一些 LEFT JOIN,我知道会有一些 AND 和一些内部 select with MAX()。但是当我不最大化连接列时,我不确定如何执行 select max()。

SELECT * FROM
table_a a1 JOIN table_b b1 ON (a1.id=b1.a_id) WHERE (a_id,max) in
(SELECT a_id,max(max) FROM
table_a a JOIN table_b b ON (a.id=b.a_id) GROUP BY b.a_id) and b1.user_id=1;