SQL WHILE循环怎么写?

Account007 2010-07-26 01:19:12


SELECT 48 AS A ,'Q00001'AS B,'W1' AS C INTO #TEMP1
UNION ALL
SELECT 49,'K00002','Q1'

SELECT 50 AS A,'K00002' AS B,'Q1' AS C INTO #TEMP2
UNION ALL
SELECT 49,'Q00001','W1'
UNION ALL
SELECT 48,'T00001','E3'

从上面两个表看,#TEMP1,#TEMP2

首先是根据#TEMP2的A列的值可以找到 #TEMP1,

例: #TEMP2表的A列值48就能找到 #TEMP1表 SELECT 48 AS A ,'Q00001'AS B,'W1' AS C ,

因为 #TEMP1表 SELECT 48 AS A ,'Q00001'AS B,'W1' AS C ,B列的值和C列对应#TEMP2表的A SELECT 49,'Q00001','W1',

而#TEMP2表的A列值49又能找到 #TEMP1表 SELECT 49,

然后#TEMP1表 SELECT 49 AS A ,'K00002'AS B,'Q1' AS C ,B列的值和C列对应#TEMP2表的A SELECT 50,'K00002','Q1',

所以说,#TEMP2表的列表48,其实是包括了#TEMP2的48和49


最后显示结果要求是:

SELECT 48 AS A,'T00001' AS B,'E3' AS C,48 AS ID UNION ALL
SELECT 49,'Q00001','W1',48 AS ID UNION ALL
SELECT 50,'K00002','Q1',48 AS ID

不知道这样说,大家是否能明白我的需求呢??
...全文
454 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
rmljoe 2010-07-26
  • 打赏
  • 举报
回复
...

while @@rowcount <> 0
begin

...
end


有一层的插入表,没有时自然会跳出来
鸭梨山大帝 2010-07-26
  • 打赏
  • 举报
回复

declare @i int
set @i = 1

while(@i<100)
begin
--你的代码
set @i = @i +1
end
lingjin520 2010-07-26
  • 打赏
  • 举报
回复
没太明白,关注
hanshuanganqi 2010-07-26
  • 打赏
  • 举报
回复
也跟着学习
duanzhi1984 2010-07-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 account007 的回复:]
SQL code



SELECT 48 AS A ,'Q00001'AS B,'W1' AS C INTO #TEMP1
UNION ALL
SELECT 49,'K00002','Q1'

SELECT 50 AS A,'K00002' AS B,'Q1' AS C INTO #TEMP2
UNION ALL
SELECT 49,'Q00001','W1'
UNIO……
[/Quote]
规则有点乱,两个表检索数据时没规律!
hokor 2010-07-26
  • 打赏
  • 举报
回复
感觉像递归,可惜我不会,等高手。。
王向飞 2010-07-26
  • 打赏
  • 举报
回复
太困了。纯帮顶
Account007 2010-07-26
  • 打赏
  • 举报
回复



SELECT 48 AS A ,'Q00001'AS B,'W1' AS C INTO #TEMP1
UNION ALL
SELECT 49,'K00002','Q1'

SELECT 50 AS A,'K00002' AS B,'Q1' AS C INTO #TEMP2
UNION ALL
SELECT 49,'Q00001','W1'
UNION ALL
SELECT 48,'T00001','E3'

从上面两个表看,#TEMP1,#TEMP2

首先是根据#TEMP2的A列的值找到 #TEMP1,

例: #TEMP2表的A列值48就能找到 #TEMP1表 SELECT 48 AS A ,'Q00001'AS B,'W1' AS C ,

因为 #TEMP1表 SELECT 48 AS A ,'Q00001'AS B,'W1' AS C ,B列的值和C列对应#TEMP2表的A SELECT 49,'Q00001','W1',

而#TEMP2表的A列值49又能找到 #TEMP1表 SELECT 49,

然后#TEMP1表 SELECT 49 AS A ,'K00002'AS B,'Q1' AS C ,B列的值和C列对应#TEMP2表的A SELECT 50,'K00002','Q1',

所以说,#TEMP2表的列表48,其实是包括了#TEMP2的48和49


最后显示结果要求是:

SELECT 48 AS A,'T00001' AS B,'E3' AS C,48 AS ID UNION ALL
SELECT 49,'Q00001','W1',48 AS ID UNION ALL
SELECT 50,'K00002','Q1',48 AS ID

22,298

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧