只是不起作用是我需要带上我称为second_table的右表的最后一行
table_one:
id
user_id
second_table
id
payment_instrument_id
select p_i.id, p_i.user_id, a_r.id, a_r.table_one_id
from table_one p_i
left join (
select a_r.table_one_id, max(a_r.id) id
from second_table a_r
group by a_r.table_one_id
) lastSD on lastSD.table_one_id = p_i.id
left join second_table a_r on a_r.table_one_id = lastSD.table_one_id
答案 0 :(得分:1)
您加入JOIN
的{{1}}条件不正确;您需要同时加入second_table
和payment_instrument_id
仅获得最后一行:
id
输出(用于截断的数据样本):
select p_i.id, p_i.user_id, a_r.id, a_r.payment_instrument_id
from payment_instruments p_i
left join (
select a_r.payment_instrument_id, max(a_r.id) id
from second_table a_r
group by a_r.payment_instrument_id
) lastSD on lastSD.payment_instrument_id = p_i.id
left join second_table a_r on a_r.payment_instrument_id = lastSD.payment_instrument_id and a_r.id = lastSD.id
where p_i.user_id = 1030
请注意,您可以使用id user_id id payment_instrument_id
803 1030 86 803
958 1030
通过CTE简化代码:
ROW_NUMBER()
输出与第一个查询相同。
(两个查询的)演示on dbfiddle