实例讲解如何正确使用数据库游标


 在下面的示例中,表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

 

本文作者:
« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3