首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL查询结果,怎么不用循环movenext方法获得全部值

2014-01-01 
SQL查询结果,如何不用循环movenext方法获得全部值有一条sql查询语句,通过外部调用select id from tablenam

SQL查询结果,如何不用循环movenext方法获得全部值
有一条sql查询语句,通过外部调用
select id from tablename

目前是通过循环的方式获得字段id的值有值
表结果如下:
id  bigint 自动编号
Title nvarchar(30) 
----------------------------
id  Title
1   A
2   B
3   C
4   D
5   E
6   F
-----------------------------

目前是通过
select id from tablename
然后用
do while not rs.movenext
    idList = idList & "," & rs("id")
    rs.movenext
loop
获得所有的id

有没有更简单的方法,不需要通过循环,不需要通过rs.movenext,直接sql查询完后获得所有的id?

[解决办法]

select stuff ((select ','+id from tablename  FOR XML PATH('')),1,1,'')

[解决办法]
----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2013-12-31 10:20:27
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
--Dec 28 2012 20:23:12 
--Copyright (c) Microsoft Corporation
--Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[tablename]
if object_id('[tablename]') is not null drop table [tablename]
go 
create table [tablename]([id] int,[Title] varchar(1))
insert [tablename]
select 1,'A' union all
select 2,'B' union all
select 3,'C' union all
select 4,'D' union all
select 5,'E' union all
select 6,'F'
--------------开始查询--------------------------

select DISTINCT
stuff((select ','+CONVERT(VARCHAR(max),id) from [tablename] b 
       --where b.col1=a.col1 and b.col2=a.col2 
       for xml path('')),1,1,'') [id]
from [tablename]
----------------结果----------------------------
/* 
id
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1,2,3,4,5,6
*/

[解决办法]
引用:
目前外部循环的方法:
将表1的所有Title通过循环方式取得1条记录,取到1条记录后,再将当前记录的Title跟表2的description进行like匹配,再将匹配的结果循环取值到变量中,完成当前匹配后,再取表1的下一条记录。


能不能换一下,把description 作为外部循环,每次取出1条,然后对内层的表1 的所有title,循环一次,然后再是外层的第二条记录,再对内层的循环一次

热点排行