<p>由于您只对链接到乘数的推送感兴趣,因此可以在表之间不使用联接的情况下实现这一点。以下基于您自己尝试的查询演示了总体思路:</p>
<pre><code>select *
from multipliers
where push_id is not null and
push_id = ( select max(push_id)
from multipliers
)
</code></pre>
<p>如果要按push类型进行约束,假设模型已规范化,仅在push表中包含该信息,则需要一个连接,例如:</p>
<pre><code>select m.*
from multipliers m
inner join pushes p
on m.push_id = p.id
where p.type = 'Whatever push type'
and m.push_id = (
select max(push_id)
from multipliers
);
</code></pre>
<blockquote>
<p><strong>EDIT</strong> based on new requirement in question to partition by push_type:</p>
</blockquote>
<p>您可以使用嵌套的成员资格测试来扩展前面的查询,如下所示,以获得所需的结果</p>
<pre><code>select m.*
from multipliers m
inner join pushes p
on m.push_id = p.id
where p.type = 'CONSTANT'
and m.push_id = (
select max(push_id)
from multipliers
where push_id in (
select push_id
from pushes
where type = 'CONSTANT'
)
);
</code></pre>
<p>或者使用从初始查询派生的更简单的查询:</p>
<pre><code>select *
from multipliers
where push_id = (
select max(push_id)
from pushes
where push_type = 'CONSTANT'
)
</code></pre>