在日常作业中,有时候可能是一些活动要抽出得奖人或选出抽查的一些名单, 
就常常会使用到 Order BY Newid() 的方式来做随机数选出, 
但有可能的状况需是要搭配到 DISTINCT 来选出,这时候如 DISTINCT 与 Order By Newid() 
同时使用就会遇到错误讯息

「如果已指定 SELECT DISTINCT,则 ORDER BY 项目必须显示于选取列表中」。 
以下这个范例,就分享一个最简单的处理办法。 
这边范例的数据库是使用
章立民
老师书中的范例中文北风数据库, 
透过用中文的范例数据库,让大家可以比较亲近一些,来了解这个范例的效果。 

如果想在这群 DISTINCT 数据中随机数选初10笔, 
则你有可能会直接联想到使用 
SELECT DISTINCT 员工编号,送货城市 
FROM dbo.订货主档 
Order by newid() 
当然因为 DISTINCT 内在最筛选数据时,没有 newid() 则一定会发生 
「如果已指定 SELECT DISTINCT,则 ORDER BY 项目必须显示于选取列表中」。 

那有可能就会想说,把 newid() 加进去SELECT 里面,这样Order BY 就没问题了, 
这样使用的话,效果可能你会发现是跟全部SELECT一样的效果。

所以说的那么多,解决的方法是什么呢? 
就是把 DISTINCT(筛选)
与 Order By Newid() 随机数排序分成两个查询,在组合在一起,

SELECT TOP 10  * 
FROM — 仿真一个数据表 

SELECT DISTINCT 员工编号,送货城市 
FROM dbo.订货主档 
) AS 虚构出来的数据表 
Order by newid()

就透过先筛选的子查询,在使用 newid() 就能过将这样的功能轻松的做出来

在SELECT DISTINCT 状况下使用 Order BY Newid() 随机数选出记录的更多相关文章

  1. SELECT DISTINCT ON expressions must match initial ORDER BY expressions

    开发说pg中执行sql报错,发来消息让帮看看: SELECT DISTINCT ON expressions must match initial ORDER BY expressions 详细语句如 ...

  2. 《MySQL必知必会》检索数据,排序检索数据(select ,* ,distinct ,limit , . , order by ,desc)

    <MySQL必知必会>检索数据,排序检索数据 1.检索数据 1.1 select 语句 为了使用SELECT检索表数据,必须至少给出两条信息一想选择什 么,以及从什么地方选择. 1.2 检 ...

  3. mysql 去除重复 Select中DISTINCT关键字的用法 在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是 distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不能解决的话,

      在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记 ...

  4. JS中Float类型加减乘除 修复 JQ 操作 radio、checkbox 、select LINQ to SQL:Where、Select/Distinct LINQ to SQL Count/Sum/Min/Max/Avg Join

    JS中Float类型加减乘除 修复   MXS&Vincene  ─╄OvЁ  &0000027─╄OvЁ  MXS&Vincene MXS&Vincene  ─╄Ov ...

  5. LINQ to SQL语句(2)之Select/Distinct

    适用场景:o(∩_∩)o- 查询呗. 说明:和SQL命令中的select作用相似但位置不同,查询表达式中的select及所接子句是放在表达式最后并把子句中的变量也就是结果返回回来:延迟.Select/ ...

  6. LINQ to SQL 语句(2)之 Select/Distinct

    LINQ to SQL 语句(2)之 Select/Distinct [1] Select 介绍 1 [2] Select 介绍 2 [3] Select 介绍 3 和  Distinct 介绍 Se ...

  7. mysql中select distinct的用法

    在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但 往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的 ...

  8. linq语法之select distinct Count Sum Min Max Avg

    原文来自:http://www.50cms.com/Pages_13_72.aspx 本篇详细说明linq中的Select和Count/Sum/Min/Max/Avg等的用法. Select/Dist ...

  9. LINQ to SQL语句之Select/Distinct和Count/Sum/Min/Max/Avg (转)

    Select/Distinct操作符 适用场景:o(∩_∩)o… 查询呗. 说明:和SQL命令中的select作用相似但位置不同,查询表达式中的select及所接子句是放在表达式最后并把子句中的变量也 ...

随机推荐

  1. asp.net请求管道和页面生命周期

  2. R语言合并data.frame

    Merging Data Adding Columns To merge two data frames (datasets) horizontally,  use the merge functio ...

  3. Linux共享库 base64库

    base64网上实现很多,但是如果是对中文进行编码,有的无法编码,有的编码结果不一致 经过研究,发现base64算法都没有问题,问题出现在汉字的编码上,下面的base64编码稍微做了一些改进,增加了编 ...

  4. C++中内存泄漏的几种情况

    1. 在类的构造函数和析构函数中没有匹配的调用new和delete函数 两种情况下会出现这种内存泄露:一是在堆里创建了对象占用了内存,但是没有显示地释放对象占用的内存:二是在类的构造函数中动态的分配了 ...

  5. 深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)

    深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam) 深度学习笔记(一):logistic分类 深度学习笔记(二):简单神经网络,后向传播算法及实现 ...

  6. python一天一题(2)

    python查询mysql数据库 import pymysql host = '192.168.74.5' user = 'root' passwd ='root' port = 3310 db = ...

  7. C#基础--------------------C#正则表达式

    为了避免以后这样的情况,在此记录下正则表达式的一些基本使用方法附带小的实例.让以后在使用时能一目了然知道他的使用,为开发节约时间,同时也分享给大家 正则元字符 在说正则表达式之前我们先来看看通配符,我 ...

  8. R语言绘制花瓣图flower plot

    R语言中有很多现成的R包,可以绘制venn图,但是最多支持5组,当组别数大于5时,venn图即使能够画出来,看上去也非常复杂,不够直观: 在实际的数据分析中,组别大于5的情况还是经常遇到的,这是就可以 ...

  9. C# 大图片压缩算法,减少图片体积

    声明: 图片压缩算法,不建议对小图片进行压缩,一般文件小于1m的,真心没必要压缩, 图片很小的,例如:几百KB的图片,有可能不会减少图片体积,反而压缩后更大,也很正常, 请大家合理使用,并不是,所有图 ...

  10. 关于form表单onsubmi提交

    表单允许客户端的用户以标准格式向服务器提交数据.表单的创建者为了收集所需数据,使用了各种控件设计表单如 INPUT 或 SELECT.查看表单的用户只需填充数据并单击提交按钮即可向服务器发送数据.服务 ...