我在下面提到了两个表。
Table1
ID ref_id
O-1 rt-1-r
O-2 rx-2-eTable2
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所需输出
ID Value
O-1 0
O-2 13我已经尝试了下面提到的查询,但它对一个有效ID当我传递多个ID在IN它不工作。
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;发布于 2021-02-27 11:51:00
我会用ROW_NUMBER这里:
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;我不喜欢不使用解析函数,但是如果你必须这样做,这里有一种方法:
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;https://stackoverflow.com/questions/66395407
复制相似问题