我已经提到如何从表中获取第二大或第三大条目,但它只能通过查看最大值来返回。
但在这里我需要一个使用另一个字段的最大值的 sql 查询(这里的 id 是一个序列)。
这是表 my_test
我需要通过id获得sent_by的第二大唯一值,即100
我的查询似乎不太好,我试过了
SELECT sent_by
FROM MY_TEST
WHERE id =
(SELECT MAX(id)
FROM MY_TEST
WHERE id NOT IN
(SELECT id
FROM MY_TEST
WHERE sent_by =(SELECT sent_by FROM my_test WHERE id =(SELECT MAX(id) FROM MY_TEST))
)
); -- results 100
有没有其他简单的方法来获得所需的?如果我需要获得第三个呢?
编辑
在这里,我将更新我的问题以使您更清楚。
让我们假设给定的表是消息事务的详细信息。让 id 是唯一的并且是(序列),sent_by 插入个人/人的 id(如 user_id)。sent_by 列可能/可能不会插入具有相同 user_id 的多行。
如果我需要获取最新的 sent_by 值:我可以查询
select sent_by from my_test where id= (select max(id) from my_test);-- to get 60
我的问题是取第二个最新的 sent_by 值:(在给定的表中,
the 2nd latest sent_by value should be 100, as id 8, 9, 10 are same sent_by values
the 3rd latest sent_by value should be 4,
the 4th latest sent_by value should be 3
)
希望问题现在很清楚。
提前致谢:)