UNION ALL 和 ORDER BY NEWID 一起使用
2012-03-09 17:37
483 查看
当使用UNION ALL或者UNION时,如果按照NewId()随机排序,那么,不能直接写
SQL 代码
如果这样写,运行时会报告错误:在关键字 'UNION' 附近有语法错误。
需要写成
SQL 代码
但是,这些,在SQL Server 2008里面是正确的,但在SQL Server2000里面,仍然会报告错误:如果语句中包含 UNION 运算符,那么 ORDER BY 子句中的项就必须出现在选择列表中。
在SQL Server 2000里面,需要写成
SQL 代码
才可以正常执行。
SQL 代码
SELECT TOP 2 * FROM [ Article ] Where ArticleId < 100 Order By NewId () UNION ALL SELECT TOP 8 * FROM [ Article ] Where ArticleId > 200 Order By NewId ()
如果这样写,运行时会报告错误:在关键字 'UNION' 附近有语法错误。
需要写成
SQL 代码
SELECT * FROM ( SELECT TOP 2 * FROM [ Article ] Where ArticleId < 100 Order By NewId ()) A UNION ALL SELECT * FROM ( SELECT TOP 8 * FROM [ Article ] Where ArticleId > 200 Order By NewId ()) B
但是,这些,在SQL Server 2008里面是正确的,但在SQL Server2000里面,仍然会报告错误:如果语句中包含 UNION 运算符,那么 ORDER BY 子句中的项就必须出现在选择列表中。
在SQL Server 2000里面,需要写成
SQL 代码
SELECT * FROM ( SELECT TOP 2 * , NewId () As RandomX FROM [ Article ] Where ArticleId < 100 Order By RandomX) A UNION ALL SELECT * FROM ( SELECT TOP 8 * , NewId () As RandomX FROM [ Article ] Where ArticleId > 200 Order By RandomX) B
才可以正常执行。
相关文章推荐
- 再谈 UNION ALL 和 ORDER BY NEWID 一起使用
- 用了union all时如何用order by newid()?
- oracle order by与union一起使用的用法
- 在SELECT DISTINCT 状况下使用 Order BY Newid() 随机数选出记录
- SQL Server 使用Order by newID()返回随机数据
- Sql order by 和 group BY一起使用时需要注意
- Sql order by 和 group BY一起使用时需要注意
- 关于XSL中xsl:for-each的order-by属性的使用
- 如何使用MySQL Joins and More ORDER BY With LIMIT
- MyBatis order by 动态参数时或使用Like查询时用$而不是#
- sql order by,desc和limit使用(mysql)
- SQL 分组后返回序号(ROW_NUMBER () OVER(PARTITION BY order_no ORDER BY START_Time ASC 的使用方法)
- order by newid() 各种数据库随机查询的方法
- Server 2005 ROW_NUMBER() over(order by *) 使用
- SharePoint 使用 FullTextSqlQuery order by 的问题
- order by newid() 随机查询
- Oracle之sum / over / partition by / order by联合使用
- union all 和where条件一起使用查询数据不对的问题
- SQL Server Order by在union子句不可直接使用的原因
- order by newid() 随机查询