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功底,应该很容易理解。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)