谁来帮我解读下这段SQL语句?

来源:百度知道 编辑:UC知道 时间:2024/05/23 20:36:58
SELECT ROUND(RAND() * 1000)
FROM (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) AS NUMBERS
这是一段给出10个1000以内的随机数的SQL语句。我想知道ROUND()函数和RAND()函数的用法,还有FROM从句中的那个NUMBERS表是做什么用的?

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 ROUND(RAND() * 1000)
FROM
rand()*1000从上面得结果集当中得出一个随机数
round()取整数

NUMBERS是一个别名啊,他的意思就是
(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)
这个组合查询表的别名,因为这段组合查询的语句返回的其实就是一个表,你把这段代码理解为从一个表查询的数据就明白了。。

这个是执行这段代码的提示
在sql2000环境下运行的

服务器: 消息 189,级别 15,状态 1,行 1
round 函数要求有 2 到 3 个参数。
服务器: 消息 156,级别 15,状态 1,行 8
在关键字 'AS' 附近有语法错误。

ROUND() 是四舍五入,RAND()是产生0到1之间的随机数,不包括0和1

SELECT substring(
convert(varchar(10),ROUND(RAND() * 1000,1)),1,3
)
FROM (SELECT 0 AS NUMBER UNION SELECT 1 UNION SELECT 2
UNION
SELECT 3 UNION SELECT 4 UNION SELECT 5