資料庫中遊標的經典應用

來源:互聯網
上載者:User

表className中有如下分類:

classID   className
1              衣服
2              褲子
5              帽子
10            鞋子

表productInfo有如下記錄:

productID             productName            parentID            clickNum

1                            男士衣服                      1                         90            --衣服類別中這條記錄的點擊率最高
2                            女士衣服                      1                         80
3                            男士褲子                      2                         70
4                            女士褲子                      2                         90            --褲子類別中這條記錄點擊率最高
5                            男士帽子                      5                         15
6                            女士帽子                      5                         30            --帽子類別中這條點擊率最高
7                            男士鞋子                      10                       65            --鞋子類別中這條點擊率最高
8                            女士鞋子                      10                       52
9                            女士鞋子1                    10                       54

現在要求分別把衣服,褲子,帽子,鞋子這些類別中點擊率最高的一條記錄找出來,然後再降序排列,結果應如下:

productID             productName            clickNum
1                            男士衣服                      90
4                            女士褲子                      90
7                            男士鞋子                      65
6                            女士帽子                      30

實現方法:

declare @temp table
(
 productID int,
 productName nvarchar(30),
 clickNum int
)
declare @classID int
declare cursor_classID cursor
for
select classID from dbo.className

open cursor_classID
fetch next from cursor_classID into @classID

--0 表示 FETCH 語句成功
while @@FETCH_STATUS=0
begin
  insert into @temp
  select top 1 productID,productName,clickNum from dbo.productInfo
  where parentID = @classID
  order by clickNum desc

 
  fetch next from cursor_classID into @classID
end

close cursor_classID

deallocate cursor_classID

select * from @temp order by clickNum desc

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.