zoukankan      html  css  js  c++  java
  • 再谈 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
    才可以正常执行。

  • 相关阅读:
    eXtremeDB 简单开发
    MFC PostMessage SendMessage
    char string 区别
    div 水平垂直居中
    npm—小记
    ECharts简单运行例子
    HTML在表格中添加echarts图表
    Sublime Text 3配置JavaScript运行环境
    bjdctf_2020_YDSneedGrirlfriend
    wdb_2018_2nd_easyfmt
  • 原文地址:https://www.cnblogs.com/ChengDong/p/2479319.html
Copyright © 2011-2022 走看看