我有這些表:
blocks TABLE blocks_fields TABLE
id|user_id|name id|block_id|options_id|status
1| 1|block1 1| 1| 1| 1
2| 1|block2 2| 2| 2| 0
3| 1|block3 3| 3| 3| 2
4| 1|block4 4| 4| 1| 1
blocks_events TABLE blocks_options TABLE
id|field_id|event|code id|value1|value2
1| 1| ev1 | 1234 1| 10| A
2| 2| ev1 | 5678 2| 20| B
3| 1| ev2 | 1234 3| 30| C
4| 3| ev1 | 9012 4| 10| A
我正在嘗試為每個代碼選擇最后一個事件(最后插入的行),只知道 user_id
輸出應該是這樣的:
blocks_events.event|blocks_events.code|blocks_options.value1|blocks_options.value2
ev2| 1234| 10| A
ev1| 5678| 20| B
ev1| 9012| 30| C
我知道如何通過多次選擇獲得此輸出,但我想知道是否可以僅通過一次選擇來完成。
uj5u.com熱心網友回復:
這只是簡單的內部聯接,使用 row_number 僅獲取每個代碼的最新事件:
select event,code,value1,value2
from (
select be.event,be.code,bo.value1,bo.value2,row_number() over (partition by be.code order by be.id desc) rn
from blocks b
join blocks_fields bf on bf.block_id=b.id
join blocks_events be on be.field_id=bf.id
join blocks_options bo on bo.id=bf.options_id
where b.user_id=1
) latest_events_for_code
where rn=1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/396727.html
上一篇:同一組的其他成員的不同價格
