SQL Server2008 Order by在union子句不可直接使用的原因详解
按照要求,每个取top 20,既然是随机的取,那么就SQL Server Order by newid()就是了,然后把所有数据union起来就得了。所以我立即给出了答案:
selecttop 20 *fromxxxwheretype=1orderbynewid() union selecttop 20 *fromxxxwheretype=0orderbynewid()
但是在sql 查询分析器种不对,语法有错,我乍一看,好像没有问题吧:
selecttop 20 *fromxxxwheretype=1orderbynewid() 单独执行 都是没有问题得;
下面的半句也是一样的语法结构,也没有错误。但是把这两个查询union起来就错了。奇怪啊。既然提示是order附近有错,那么我将order给去掉:
去掉也是可以运行也没有错啊。也就是说在union子句中的查询不能用SQL Server Order by。但是这儿我必须要用order by啊,要不然我怎么取出随机的20条记录
最终改写成了:
SELECT * FROM (select TOP 20 * from dbo.AngelExam where (c='无' or c=null) and (d='无' or d=null) ORDER BY newid() ) a1 UNION SELECT * FROM (select TOP 20 * from dbo.AngelExam where (c='无' or c=null) and (d='无' or d=null) ORDER BY newid()) a2
看着语句长了不少,有点怪怪得,但是没法,不知道为什么SQL Server中不能在union子句中使用order by,所以只有外围在包装一层了。
到此这篇关于SQL Server2008 Order by在union子句不可直接使用的原因详解的文章就介绍到这了,更多相关SQL Server2008 Order by在union子句不可直接使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SQL Server 2008R2编写脚本时智能提示功能丢失的处理方法
SQL Server 2008R2中增加了新的智能提示的功能简化了输入,非常方便。但突然有一天智能提示没有了,好郁闷2012-07-07
如何在SQL Server 2008下轻松调试T-SQL语句和存储过程
sqlserver2008调试的要求和条件:如果在引擎所在的电脑或服务器上调试,则只需要SA或者WINDOWS用户登陆即可。如果是异地调试,则需要设置防火墙例外,增加SSMS和SQLSERVER.EXE为允许,增加135端口允许通过2013-10-10
一个简单的后台与数据库交互的登录与注册[sql注入处理、以及MD5加密]
这篇文章主要介绍了一个简单的后台与数据库交互的登录与注册,包含sql注入处理、以及MD5加密知识点介绍2016-07-07
sql server 2008 不允许保存更改,您所做的更改要求删除并重新创建以下表
今天在运行sql server 2008时候提示不允许保存更改,您所做的更改要求删除并重新创建以下表 的解决办法2013-05-05
图文详解Windows Server2012 R2中安装SQL Server2008
这篇文章主要以图文结合的方式向大家推荐Windows Server2012 R2中安装SQL Server2008的详细过程,感兴趣的小伙伴们可以参考一下2015-11-11
SQL Server2008 R2 数据库镜像实施手册(双机)SQL Server2014同样适用
这篇文章主要介绍了SQL Server2008 R2 数据库镜像实施手册(双机)SQL Server2014同样适用,需要的朋友可以参考下2017-04-04


最新评论