亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

sql 多條件組合查詢,并根據(jù)指定類別找出所有最小子類別的SQL語句備忘

 更新時間:2009年06月13日 19:55:29   作者:  
多條件組合查詢,并根據(jù)指定類別找出所有最小子類別的SQL語句備忘
復制代碼 代碼如下:

DECLARE @PAGESIZE INT
DECLARE @PAGEINDEX INT

DECLARE @PAGECOUNT INT
DECLARE @RECORDCOUNT INT

SELECT @PAGESIZE=5
SELECT @PAGEINDEX=1

DECLARE @FIELDNAME VARCHAR(50)
DECLARE @FIELDVALUE VARCHAR(50)
DECLARE @OPERATION VARCHAR(50)

--組合條件
DECLARE @WHERE NVARCHAR(1000)
SELECT @WHERE=' WHERE NOTDISPLAY=0 '

DECLARE ABC CURSOR FOR
SELECT FIELDNAME,FIELDVALUE,OPERATION FROM TBPARAMETERS
OPEN ABC
FETCH NEXT FROM ABC INTO @FIELDNAME,@FIELDVALUE,@OPERATION
WHILE @@FETCH_STATUS=0
BEGIN
    IF(@OPERATION = 'Like')
        SELECT @WHERE=@WHERE + ' AND ' + @FIELDNAME + ' Like ''%'+@FIELDVALUE+'%'''
    ELSE
    BEGIN
        IF(@FIELDNAME='CLASSID')
        BEGIN
            DECLARE @ROOTID INT
            SELECT @ROOTID=@FIELDVALUE
            --將指定類別的值的子類加入臨時表
            INSERT INTO TBTEMCLASS(ID) SELECT ID FROM TBSDINFOCLASS WHERE ROOTID=@ROOTID

            --使用游標來將指定類別的最小類別提出放入臨時表
            DECLARE CLASSID CURSOR FOR
            SELECT ID FROM TBTEMCLASS
            OPEN CLASSID
            FETCH NEXT FROM CLASSID INTO @ROOTID
            WHILE @@FETCH_STATUS=0
            BEGIN
                --如果判斷有子類則將子類加入臨時表,并刪除該類別,以使游標在臨時表中循環(huán)
                IF(EXISTS(SELECT ID FROM TBSDINFOCLASS WHERE ROOTID=@ROOTID))
                BEGIN
                    INSERT INTO TBTEMCLASS(ID) SELECT ID FROM TBSDINFOCLASS WHERE ROOTID=@ROOTID
                    DELETE FROM TBTEMCLASS WHERE ID=@ROOTID
                END
                FETCH NEXT FROM CLASSID INTO @ROOTID
            END
            CLOSE CLASSID
            DEALLOCATE CLASSID

            --將自身加入臨時表
            INSERT INTO TBTEMCLASS(ID) SELECT @FIELDVALUE

            SELECT @WHERE=@WHERE +' AND CLASSID IN(SELECT ID FROM TBTEMCLASS)'
        END
        ELSE
            SELECT @WHERE=@WHERE + ' AND ' + @FIELDNAME + @OPERATION+@FIELDVALUE
    END
    FETCH NEXT FROM ABC INTO @FIELDNAME,@FIELDVALUE,@OPERATION
END
CLOSE ABC
DEALLOCATE ABC

TRUNCATE TABLE TBPARAMETERS

-- --計數(shù)語句
DECLARE @COUNTSQL NVARCHAR(500)
SELECT @COUNTSQL=N'SELECT @RECORDCOUNT=COUNT(*) FROM TBSDINFO INNER JOIN TBUSER ON TBSDINFO.USERNAME=TBUSER.USERNAME '
SELECT @COUNTSQL=@COUNTSQL+@WHERE
--
-- --執(zhí)行統(tǒng)計
EXEC sp_executesql @COUNTSQL,
     N'@RECORDCOUNT INT OUT',
     @RECORDCOUNT OUT
--
-- --計算頁數(shù)
SET @PageCount = CEILING(@RecordCount * 1.0 / @PageSize)
--
-- --查詢語句
DECLARE @SQL NVARCHAR(2000)
DECLARE @ORDERBY VARCHAR(100)
SELECT @ORDERBY=' ORDER BY TBSDINFO.IsCommon DESC,TBSDINFO.CommonTime DESC,TBSDINFO.CreateTime DESC'

IF(@PAGEINDEX=1)
BEGIN
    SELECT @SQL='INSERT INTO TBTEMINFO(ID,TITLE,REMARK,CREATETIME,ENDTIME,WEBDOMAIN,CLASSID,CLASSNAME,TYPEID,TYPENAME,PROVINCEID,PROVINCE,CITYID,CITY,COMPANYNAME,ADDRESS,USERTYPE) '
    SELECT @SQL=@SQL+'SELECT TOP '+CONVERT(VARCHAR(4),@PAGESIZE)+' TBSDINFO.ID,TITLE,Remark,TBSDINFO.Createtime,EndTime, WebDomain,TBSDINFO.CLASSID,(SELECT CLASSNAME FROM TBSDINFOCLASS WHERE TBSDINFOCLASS.ID=TBSDINFO.CLASSID) AS CLASSNAME,TYPEID,(SELECT TYPENAME FROM TBSDINFOTYPE WHERE TBSDINFO.TYPEID=TBSDINFOTYPE.ID) AS TYPENAME,ProvinceID,(SELECT PROVINCE FROM TBPROVINCE WHERE TBPROVINCE.ID=PROVINCEID) AS PROVINCE,CityID,(SELECT CITY FROM TBCITY WHERE TBCITY.ID=CITYID) AS CITY,CompanyName,TBSDINFO.Address,UserType FROM TBSDINFO INNER JOIN TBUSER ON TBUSER.USERNAME=TBSDINFO.USERNAME'
    SELECT @SQL=@SQL+@WHERE
    SELECT @SQL=@SQL+@ORDERBY
END
ELSE
BEGIN
    DECLARE @MINRECORD INT
    SELECT @MINRECORD=(@PAGEINDEX-1)*@PAGESIZE
    SELECT @SQL='INSERT INTO TBTEMINFO(ID,TITLE,REMARK,CREATETIME,ENDTIME,WEBDOMAIN,CLASSID,CLASSNAME,TYPEID,TYPENAME,PROVINCEID,PROVINCE,CITYID,CITY,COMPANYNAME,ADDRESS,USERTYPE) '
    SELECT @SQL=@SQL+'SELECT TOP '+CONVERT(VARCHAR(4),@PAGESIZE)+' TBSDINFO.ID, TITLE,Remark,TBSDINFO.Createtime,EndTime, WebDomain,TBSDINFO.CLASSID,(SELECT CLASSNAME FROM TBSDINFOCLASS WHERE TBSDINFOCLASS.ID=TBSDINFO.CLASSID) AS CLASSNAME,TYPEID,(SELECT TYPENAME FROM TBSDINFOTYPE WHERE TBSDINFO.TYPEID=TBSDINFOTYPE.ID) AS TYPENAME,ProvinceID,(SELECT PROVINCE FROM TBPROVINCE WHERE TBPROVINCE.ID=PROVINCEID) AS PROVINCE,CityID,(SELECT CITY FROM TBCITY WHERE TBCITY.ID=CITYID) AS CITY,CompanyName,TBSDINFO.Address,UserType FROM TBSDINFO INNER JOIN TBUSER ON TBUSER.USERNAME=TBSDINFO.USERNAME'
    IF(@WHERE<>'')
        SELECT @SQL=@SQL+@WHERE+' AND '
    ELSE
        SELECT @SQL=@SQL+' WHERE '        
    SELECT @SQL=@SQL+' TBSDINFO.ID NOT IN(SELECT TOP '+CONVERT(VARCHAR(4),@MINRECORD)+' TBSDINFO.ID FROM TBSDINFO INNER JOIN TBUSER ON TBUSER.USERNAME=TBSDINFO.USERNAME '+@WHERE+@ORDERBY+')'

    SELECT @SQL=@SQL+@ORDERBY
END

--PRINT @SQL

--執(zhí)行查詢
--查詢的結(jié)果是將找到的記錄放入臨時表,再通過以下游標查詢出相應的父類與根類記錄
EXEC (@SQL)

DECLARE @CLASSID INT
DECLARE @ID INT

DECLARE TEM CURSOR FOR
SELECT ID,CLASSID FROM TBTEMINFO
OPEN TEM
FETCH NEXT FROM TEM INTO @ID,@CLASSID
WHILE @@FETCH_STATUS=0
BEGIN
    DECLARE @NS VARCHAR(500)
    DECLARE @DS VARCHAR(200)

    SELECT @NS=''
    SELECT @DS=''

    DECLARE @TEMROOTID INT

    DECLARE @TEMTS VARCHAR(50)
    SELECT @CLASSID=ID,@TEMTS=CLASSNAME,@TEMROOTID=ROOTID FROM TBSDINFOCLASS WHERE ID=@CLASSID
    SELECT @NS=@TEMTS+'#'+@NS
    SELECT @DS=CONVERT(VARCHAR(10),@CLASSID)+'#'+@DS

    WHILE(@TEMROOTID>0)
    BEGIN    
        SELECT @TEMROOTID=ROOTID,@CLASSID=ID,@TEMTS=CLASSNAME FROM TBSDINFOCLASS WHERE ID=@TEMROOTID
        SELECT @NS=@TEMTS+'#'+@NS
        SELECT @DS=CONVERT(VARCHAR(10),@CLASSID)+'#'+@DS
    END

    UPDATE TBTEMINFO SET NS=@NS,DS=@DS WHERE ID=@ID

    FETCH NEXT FROM TEM INTO @ID,@CLASSID
END
CLOSE TEM
DEALLOCATE TEM


SELECT * FROM TBTEMINFO

TRUNCATE TABLE TBTEMINFO
TRUNCATE TABLE TBTEMCLASS

相關文章

  • SQLSERVER ISNULL 函數(shù)與判斷值是否為空的sql語句

    SQLSERVER ISNULL 函數(shù)與判斷值是否為空的sql語句

    由于服務器設置不當導致sqlserver的某個字段為空,導致部分內(nèi)容顯示失敗,所有這里需要將為空的字符替換為制定的字符
    2013-11-11
  • SQL語句練習實例之四 找出促銷活動中銷售額最高的職員

    SQL語句練習實例之四 找出促銷活動中銷售額最高的職員

    你剛在一家服裝銷售公司中找到了一份工作,此時經(jīng)理要求你根據(jù)數(shù)據(jù)庫中的兩張表得到促銷活動銷售額最高的銷售員
    2011-10-10
  • 我也有微信朋友圈了 Android實現(xiàn)

    我也有微信朋友圈了 Android實現(xiàn)

    最近寫了一個簡單的朋友圈程序,包含了朋友圈的列表實現(xiàn),視頻的錄制、預覽與上傳,圖片可選擇拍照或者從相冊選取,從相冊選取可以一次選擇多張照片,并且限制照片的張數(shù),想擁有真正屬于自己的朋友圈嗎?快來圍觀
    2016-05-05
  • 自增長鍵列統(tǒng)計信息的處理方法

    自增長鍵列統(tǒng)計信息的處理方法

    在這篇文章展示了SQL Server的查詢優(yōu)化器如何使用自增長鍵列統(tǒng)計信息,大家都知道SQLServer里每個統(tǒng)計信息對象都有關聯(lián)的直方圖直方圖用多個步長描述指定列數(shù)據(jù)分布情況,需要的朋友可以參考下
    2015-07-07
  • SQL?Server縱表轉(zhuǎn)橫表的實現(xiàn)示例

    SQL?Server縱表轉(zhuǎn)橫表的實現(xiàn)示例

    在使用SQL?Server數(shù)據(jù)庫的過程中我們經(jīng)常會遇到需要將查詢結(jié)果從縱表轉(zhuǎn)成橫表的問題,本文就來介紹一下SQL?Server縱表轉(zhuǎn)橫表示例,感興趣的可以了解一下
    2023-12-12
  • sqlServer 獲取漢字字串的拼音聲母

    sqlServer 獲取漢字字串的拼音聲母

    sqlServer 中 獲取漢字字串的拼音聲母,需要的朋友可以參考下。
    2009-11-11
  • SQLServer 批量導入目錄文件

    SQLServer 批量導入目錄文件

    可以用擴展存儲過程xp_dirtree獲取文件列表,用openrowset倒入數(shù)據(jù)到二進制字段。
    2009-08-08
  • 數(shù)據(jù)庫SQL語句優(yōu)化總結(jié)(收藏)

    數(shù)據(jù)庫SQL語句優(yōu)化總結(jié)(收藏)

    網(wǎng)上關于SQL優(yōu)化的教程很多,但是比較雜亂。近日有空整理了一下,寫出來跟大家分享一下,感興趣的朋友參考下
    2017-03-03
  • sqlserver找回企業(yè)管理器的方法

    sqlserver找回企業(yè)管理器的方法

    打開SQL Server企業(yè)管理器,突然彈出一個窗口MMC 不能打開文件 C:Program FilesMicrosoft SQL Server80ToolsBinnSQL Server Enterprise Manager.MSC
    2011-02-02
  • sql導入.back文件的實現(xiàn)

    sql導入.back文件的實現(xiàn)

    本文主要介紹了sql導入.back文件的實現(xiàn),.back文件是一種備份文件,其中包含了數(shù)據(jù)庫的結(jié)構(gòu)和數(shù)據(jù),然后通過執(zhí)行一系列的SQL命令,可以還原備份文件到數(shù)據(jù)庫中,感興趣的可以了解一下
    2023-11-11

最新評論