就是一個商城平臺,想每一頁顯示 “更多不同賣家” 的商品
比如 A 最近上了 5 個商品,B 最近上了 8 個商品
更早前 C,D,E,F 上架了一個商品
那時間排序第一頁就全是 AB 的商品了,這不行
uj5u.com熱心網友回復:
可以用row_number() over()按照商品分組在按照時間排序,每次可按照row_number取出每個商品的兩條資料,這差不多算是對每個商品分頁。uj5u.com熱心網友回復:
with a as (select 'A' AS U,1 T,sysdate+1 D FROM DUAL UNION ALL
select 'A' AS U,2,sysdate+2 D FROM DUAL UNION ALL
select 'A' AS U,3,sysdate+3 D FROM DUAL UNION ALL
select 'A' AS U,4,sysdate+4 D FROM DUAL UNION ALL
select 'A' AS U,5,sysdate+5 D FROM DUAL UNION ALL
select 'B' AS U,1,sysdate+1 D FROM DUAL UNION ALL
select 'B' AS U,2,sysdate+2 D FROM DUAL UNION ALL
select 'B' AS U,3,sysdate+3 D FROM DUAL UNION ALL
select 'B' AS U,4,sysdate+4 D FROM DUAL UNION ALL
select 'B' AS U,5,sysdate+5 D FROM DUAL UNION ALL
select 'B' AS U,6,sysdate+6 D FROM DUAL UNION ALL
select 'B' AS U,7,sysdate+7 D FROM DUAL UNION ALL
select 'B' AS U,8,sysdate+8 D FROM DUAL UNION ALL
select 'C' AS U,1,sysdate D FROM DUAL UNION ALL
select 'D' AS U,1,sysdate D FROM DUAL UNION ALL
select 'E' AS U,1,sysdate D FROM DUAL UNION ALL
select 'F' AS U,1,sysdate D FROM DUAL )
select u,t from a where (select count(*) from a b where b.u = a.u and b.d >a.d) < 2;
uj5u.com熱心網友回復:
按照時間排序 用戶分組 取時間最接近兩個 望采納..uj5u.com熱心網友回復:
select * from (
select a.name,row_number()over(partition by a.name order by a.上架時間 desc nulls last) rn from a
order by a.上架時間 desc nulls last
) a where a.rn<3
uj5u.com熱心網友回復:
上面幾個的思路都能解第一頁的顯示問題,但是想了一下,當第二頁顯示的時候,就不行了。我的思路是,按照以上樓所述的方法找出第一頁,同時將找出的內容保存到另一張表中,當查詢第二頁時,取兩張表的差集,然后在按第一頁的方法查找。但是這就不是一個業務查找陳述句了,很多時候都不適用。
才疏學淺,表達一點拙見。
望大神關注此貼,讓我們菜鳥多學點知識。
uj5u.com熱心網友回復:
沒理解你到底是要做什么,但是如果是分頁的話,你第一頁或第幾頁沒關系,只是每一種顯示最新的2條而已
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/89195.html
標籤:開發
上一篇:sql查詢的問題
