sql 循环查询

sql 循环查询,第1张

MSSQL 数据库下实现:

CREATE TABLE #TEMP (单号 INT, 价格 FLOAT)

INSERT INTO #TEMP VALUES(2,50)

INSERT INTO #TEMP VALUES(1,50)

INSERT INTO #TEMP VALUES(3,60)

INSERT INTO #TEMP VALUES(4,60)

INSERT INTO #TEMP VALUES(7,60)

INSERT INTO #TEMP VALUES(8,60)

DECLARE   @REFID        INT

        , @ORDERID        VARCHAR(30)

        , @JIAGE VARCHAR(100)

SELECT  REFID = IDENTITY(INT , 1, 1), DealFlg = 0, 单号,价格

INTO #Temp_Lists

FROM #TEMP

SELECT @REFID = MIN(REFID) FROM #Temp_Lists WHERE DealFlg = 0

CREATE TABLE #TEMP1 (单号 VARCHAR(100), 价格 FLOAT)

DECLARE @TEMPDANHAO VARCHAR

WHILE @REFID IS NOT NULL

BEGIN

   SELECT @ORDERID = 单号,@JIAGE = 价格 FROM  #Temp_Lists WHERE REFID = @REFID

   IF EXISTS(SELECT 价格 FROM #TEMP1 WHERE 价格 = @JIAGE)

   BEGIN

    SELECT @TEMPDANHAO = 单号 FROM #TEMP  WHERE 单号 = @ORDERID

    PRINT @ORDERID

    UPDATE #TEMP1 SET 单号 = convert(varchar(10),单号)+ ',' + @TEMPDANHAO WHERE 价格 = @JIAGE

   END

   ELSE

   BEGIN

     INSERT INTO #TEMP1 SELECT * FROM #TEMP  WHERE 单号 = @ORDERID

   END

    

    UPDATE #Temp_Lists SET DealFlg = 1 WHERE REFID = @REFID

    SELECT @REFID = MIN(REFID) FROM #Temp_Lists WHERE DealFlg = 0 AND REFID > @REFID

END

SELECT * FROM #TEMP1

DROP TABLE #TEMP1

DROP TABLE #Temp_Lists

DROP TABLE #TEMP

select f1 from table1的结果集做为查询条件循环查询。

如:

set @a =select f1 from table1

foreach (@a)

{

select * from table2

where f2=@a

}

sql 语句是对数据库进行 *** 作的一种语言。 结构化查询语言(Structured Query Language)简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

单个表的循环都做出来了,多表也一样啊。

首先,去sysobjects表里count(*)得出有多少个符合规则的用户表,然后用while语句控制循环次数.

同时,把所有符合规则的表,放到一个临时表里,比如#TEMP表了。然后就可以利用游标读取表名到变量中了.有了表名,那么把你上面那堆代码复制过去,简单改下,就可以套在while循环了。

唯一需要掌握的,就是对游标的使用。以你上面的SQL功底,应该很容易理解。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6668996.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存