• 再谈 UNION ALL 和 ORDER BY NEWID 一起使用


    当使用UNION ALL或者UNION时,如果按照NewId()随机排序,那么,不能直接写
     
    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()
    需要写成
     
    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
    才可以正常执行。

  • 相关阅读:
    layout布局
    窗口、easyui-window、easyui-panel、easyui-linkbutton
    FASTJSON
    Insert title here
    Insert title here
    Scala并发编程
    scala中java并发编程
    scala调用外部命令
    scala正则表达式
    scala占位符_的用法
  • 原文地址:https://www.cnblogs.com/ChengDong/p/2479319.html
Copyright © 2020-2023  润新知