首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取MySQL中的最后一行

如何获取MySQL中的最后一行
EN

Stack Overflow用户
提问于 2021-02-27 11:46:55
回答 1查看 32关注 0票数 1

我在下面提到了两个表。

Table1

代码语言:javascript
复制
ID      ref_id
O-1     rt-1-r
O-2     rx-2-e

Table2

代码语言:javascript
复制
ref_id     seq     value
rt-1-r     1       10
rt-1-r     2       15
rt-1-r     3       0
rt-1-r     4       18
rx-2-e     12      1
rx-2-e     13      13
rx-2-e     14      21

所需输出

代码语言:javascript
复制
ID      Value
O-1     0
O-2     13

我已经尝试了下面提到的查询,但它对一个有效ID当我传递多个ID在IN它不工作。

代码语言:javascript
复制
select b.ID, a.Value
FROM Table2 a
LEFT JOIN Table1 b ON a.ref_id = b.ref_id 
WHERE a.ID IN ('O-1')
order by a.seq desc limit 1 OFFSET 1;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-27 11:51:00

我会用ROW_NUMBER这里:

代码语言:javascript
复制
WITH cte AS (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY ref_id ORDER BY seq DESC) rn
    FROM Table2
)

SELECT t1.ID, t2.value
FROM Table1 t1
INNER JOIN cte t2
    ON t2.ref_id = t1.ref_id
WHERE t2.rn = 2;

我不喜欢不使用解析函数,但是如果你必须这样做,这里有一种方法:

代码语言:javascript
复制
SELECT
    t1.ID,
    (SELECT value FROM Table2 t2
     WHERE t2.ref_id = t1.ref_id AND
           t2.seq < (SELECT MAX(s.seq) FROM Table2 s WHERE s.ref_id = t2.ref_id)
     ORDER BY t2.seq DESC LIMIT 1) AS value
FROM Table1 t1;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66395407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档