SQL合并多表查询记录的存储过程
2010-07-26 17:08
78 查看
思路:将查询到的记录保存进一个临时表,再在临时表中进行查询,用完后删除临时表;
select * from dbo.PE_Nodes
CREATE PROCEDURE [dbo].[PR_GetNodeInfoByNodeID]
@Nodeid INT
declare
@str varchar(300),
@id varchar(300),
@m int,
@n int
select * into temp from dbo.PE_Nodes where 1=0 --select * into 表A from 表B:只复制表解构,不复制数据;
set @str=SUBSTRING((select arrChildID from dbo.PE_Nodes where NodeIdentifier = (select NodeIdentifier from dbo.PE_Nodes where NodeID =Nodeid )),0,300)
set @m=CHARINDEX(',',@str)
set @n=1
WHILE @m>0
BEGIN
set @id=substring(@str,@n,@m-@n)
set @n=@m+1
set @m=CHARINDEX(',',@str,@n)
Insert into temp Select * from dbo.PE_Nodes where NodeID = @id --将查到的表数据插入到临时表;
END
select * from temp
drop table temp --删除临时表
select * from dbo.PE_Nodes
CREATE PROCEDURE [dbo].[PR_GetNodeInfoByNodeID]
@Nodeid INT
declare
@str varchar(300),
@id varchar(300),
@m int,
@n int
select * into temp from dbo.PE_Nodes where 1=0 --select * into 表A from 表B:只复制表解构,不复制数据;
set @str=SUBSTRING((select arrChildID from dbo.PE_Nodes where NodeIdentifier = (select NodeIdentifier from dbo.PE_Nodes where NodeID =Nodeid )),0,300)
set @m=CHARINDEX(',',@str)
set @n=1
WHILE @m>0
BEGIN
set @id=substring(@str,@n,@m-@n)
set @n=@m+1
set @m=CHARINDEX(',',@str,@n)
Insert into temp Select * from dbo.PE_Nodes where NodeID = @id --将查到的表数据插入到临时表;
END
select * from temp
drop table temp --删除临时表
相关文章推荐
- SQL合并多表查询记录的存储过程
- 通用存储过程之三:根据主键的值,查询记录的存储过程
- 存储过程查询一张表中记录是否连续、重复并且取出对应的数据
- 通用存储过程之五: 根据查询条件,获取表记录数的存储过程。
- 通用存储过程之三:根据主键的值,查询记录的存储过程
- 通用存储过程之三:根据主键的值,查询记录的存储过程
- 存储过程查询一张表中记录是否连续、重复并且取出对应的数据
- mysql 受影响行数,记录ID,存储过程查询
- 通用存储过程之五: 根据查询条件,获取表记录数的存储过程。
- sql 查询何时何人删除何条记录的存储过程
- 通用存储过程之五: 根据查询条件,获取表记录数的存储过程。
- SqlServer删除所有存储过程和所有表、查询表是否存在指定的记录及UPDATE语句
- 存储过程结合bcp--将数据库记录导出成SQL脚本的形式.
- 如何在存储过程B中,对存储过程A的结果集进行查询
- sql存储过程 1查询;2插入;3更新;4删除
- 存储过程 统计当前库中所有表的记录数
- mysql存储过程将查询结果传给变量
- 分页存储过程,可支持多表查询[转]
- MySQL分表实现上百万上千万记录分布存储的批量查询设计模式
- SQL Server 查询Job中的存储过程