‘壹’ --sql循环查询表
单个表的循环都做出来了,多表也一样啊。
首先,去sysobjects表里count(*)得出有多少个符合规则的用户表,然后用while语句控制循环次数.
同时,把所有符合规则的表,放到一个临时表里,比如#TEMP表了。然后就可以利用游标读取表名到变量中了.有了表名,那么把你上面那堆代码复制过去,简单改下,就可以套在while循环了。
唯一需要掌握的,就是对游标的使用。以你上面的SQL功底,应该很容易理解。
‘贰’ SQL如何用语句进行查询结果遍历
结果union?? 那就要两张表查询的字段是一致的。现在假设一致,结果进行union!看下面代码:
with t as (select a,b,其他字段 from A where 你的条件)
select a,b,其他字段 from t
union
select m.a,m.b,m.其他字段 from B as m inner join t as n on m.a=n.a and m.b=n.b
‘叁’ sql语句 条件循环查询
补充:
按照你的意思改了一下,把找出的所有记录中,没有子结点(也就是叶子)的记录显示出来。
select * into #tmp from (
(select * from ywb_zd where id=6)
union all
(select * from ywb_zd where parentID in (select id from ywb_zd where id=6))
union all
(select * from ywb_zd where parentID in (select id from ywb_zd where parentID in (select id from ywb_zd where id=6)))
union all
(select * from ywb_zd where parentID in (select id from ywb_zd where parentID in (select id from ywb_zd where parentID in (select id from ywb_zd where id=6))))
)x
select * from #tmp a where not exists(select * from #tmp where parentID=a.id)
drop table #tmp
‘肆’ SQL 循环查100多个表
楼主是不是想要查询列表中所有表的记录条数,这100多个表结构一样的吧??
如果是,那么好办了。
首先说一下你可以小睡一会儿的原因:因为每次你都去open一次连接,关闭一次连接,想象一下吧,连续打开关闭100多次数据库连接,别说查询了,光打开关闭连接就够你睡一会儿了。
你需要做的是,把这100多条sql语句联合起来,然后用union:
select distinct 村,乡镇 from 文本1
union
select distinct 村,乡镇 from 文本2
.......
然后在最外面加一个select显示你要的结果,这样就是一条sql语句,只是union多了一些,但是无伤大雅,只要你的表数据不是几十万那样的。。。
如果不是上述问题,那就得研究一下脚本优化的问题了。
‘伍’ 如何用SQL循环查询语句
oracle
:
begin
for
a
in
(select
*
from
emp)
loop
...
end
loop;
end;
‘陆’ sql server 循环查询数据
Create Table A
(
Aa int
)
insert into A values(2)
Declare @cnt int
Set @cnt=10;
/*
要重复显示的次数
Sql 2005以上版本
*/
with t(Aa,Cnt)
As
(
Select Aa,1 As Cnt From A
Union All
Select Aa,cnt+1 As Cnt From t Where cnt<@cnt
)
Select Aa From t
Drop Table A
‘柒’ sql 循环查询
MSSQL 数据库下实现:
CREATETABLE#TEMP(单号INT,价格FLOAT)
INSERTINTO#TEMPVALUES(2,50)
INSERTINTO#TEMPVALUES(1,50)
INSERTINTO#TEMPVALUES(3,60)
INSERTINTO#TEMPVALUES(4,60)
INSERTINTO#TEMPVALUES(7,60)
INSERTINTO#TEMPVALUES(8,60)
DECLARE@REFIDINT
,@ORDERIDVARCHAR(30)
,@JIAGEVARCHAR(100)
SELECTREFID=IDENTITY(INT,1,1),DealFlg=0,单号,价格
INTO#Temp_Lists
FROM#TEMP
SELECT@REFID=MIN(REFID)FROM#Temp_ListsWHEREDealFlg=0
CREATETABLE#TEMP1(单号VARCHAR(100),价格FLOAT)
DECLARE@TEMPDANHAOVARCHAR
WHILE@REFIDISNOTNULL
BEGIN
SELECT@ORDERID=单号,@JIAGE=价格FROM#Temp_ListsWHEREREFID=@REFID
IFEXISTS(SELECT价格FROM#TEMP1WHERE价格=@JIAGE)
BEGIN
SELECT@TEMPDANHAO=单号FROM#TEMPWHERE单号=@ORDERID
PRINT@ORDERID
UPDATE#TEMP1SET单号=convert(varchar(10),单号)+','+@TEMPDANHAOWHERE价格=@JIAGE
END
ELSE
BEGIN
INSERTINTO#TEMP1SELECT*FROM#TEMPWHERE单号=@ORDERID
END
UPDATE#Temp_ListsSETDealFlg=1WHEREREFID=@REFID
SELECT@REFID=MIN(REFID)FROM#Temp_ListsWHEREDealFlg=0ANDREFID>@REFID
END
SELECT*FROM#TEMP1
DROPTABLE#TEMP1
DROPTABLE#Temp_Lists
DROPTABLE#TEMP
‘捌’ sql 条件 循环 查询
selectt1.日期,max(t2.价格)最高价from表At1
innerjoin表2t2ont2.日期>t1.日期andt2.日期<=t1.日期+10
groupbyt1.日期
wheret1.价格>10
‘玖’ sql语句怎么循环查询
selectf1fromtable1的结果集做为查询条件循环查询。
如:
set@a=selectf1fromtable1
foreach(@a)
{
select*fromtable2
wheref2=@a
}
‘拾’ 在sql语句中如何进行循环查询
你是相查表中所有条件为表1.a=表2.a 的记录吗
如果是 可用以下语句
select * from 表2 where 表2.a in (select a from 表1)