用户名: 密码: 免费注册 忘记密码? 网站地图 | 加入收藏 | 设为首页
首页 | 新闻 | 工具 | 系统 | 办公 | 聊天 | 多媒体 | 网页 | 运营 | 平面 | 欣赏 | 数据库 | 程序 | 服务器 | 组网
网页 | 3dmax | Ghost | Windows Xp| Dreamweaver | photoshop | Flash | office | Alexa | Css | QQ | Asp | PHP | Jsp | Access
Flash MX 2004入门 | 网站推广策略 | CorelDRAW入门 | ASP学习 | 网站建设大师功 | Word入门
  iTbulo.com > 学院 > 数据库开发教程 > MySQL教程 > Mysql使用技巧 > 正文
如何利用SQL查询返回庞大的整数序列表
iTbulo.COM 2007-5-15 未知()
 

WITH Digits AS (
    SELECT 0 as Number
    UNION SELECT 1
    UNION SELECT 2
    UNION SELECT 3
    UNION SELECT 4
    UNION SELECT 5
    UNION SELECT 6
    UNION SELECT 7
    UNION SELECT 8
    UNION SELECT 9
)
SELECT
   (d5.Number * 100000)
    + (d4.Number * 10000)
    + (d3.Number * 1000)
    + (d2.Number * 100)
    + (d1.Number * 10)
    + d0.Number as Number
FROM
    Digits AS d0
    , Digits AS d1
    , Digits AS d2
    , Digits AS d3
    , Digits AS d4
    , Digits AS d5
在SQLServer 2005中,这个SQL返回一个包含1000000条记录的结果集,从0到999999。
这条语句利用了SQL2005的新功能:CTE (Common Table Expression)
如果当前的数据库是SQL 2000或其他不支持CTE的数据库,则可以将WITH部分的SQL定义为一个视图。

CREATE VIEW .[Digits] AS
SELECT 0 AS Number
UNION SELECT 1
UNION SELECT 2
UNION SELECT 3
UNION SELECT 4
UNION SELECT 5
UNION SELECT 6
UNION SELECT 7
UNION SELECT 8
UNION SELECT 9;

CREATE VIEW [MillionNumbers] AS
SELECT
SELECT (d5.Number * 100000)
    + (d4.Number * 10000)
    + (d3.Number * 1000)
    + (d2.Number * 100)
    + (d1.Number * 10)
    + d0.Number) as Number
FROM
    Digits AS d0
    , Digits AS d1
    , Digits AS d2
    , Digits AS d3
    , Digits AS d4
    , Digits AS d5;


 我们可以用这个方法来生成大批量的测试数据。如:
INSERT INTO MyTest (RecordId, RecordIndex)
SELECT newid(), Number FROM MillionNumbers

用此方法插入数据,要比利用循环快很多倍。

文章搜索
相关资讯
相关文章 相关下载
sql中的iif语句详解
SQL扩展存储过程安装与卸载
SQL各种写法的效率问题
存储过程与SQL语句的恩怨情仇
注意那些容易被忽略的SQL注入技巧
焦点信息