日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql order by newid_order by newid() 随机查询

發(fā)布時(shí)間:2024/10/8 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql order by newid_order by newid() 随机查询 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在日常作業(yè)中,有時(shí)候可能是一些活動(dòng)要抽出得獎(jiǎng)人或選出抽查的一些名單,就常常會(huì)使用到Order BY Newid() 的方式來做隨機(jī)數(shù)選出,但有可能的狀況需是要搭配到DISTINCT 來選出,這時(shí)候如DISTINCT 與Order By Newid()? 同時(shí)使用就會(huì)遇到錯(cuò)誤訊息

「如果已指定SELECT DISTINCT,則ORDER BY 項(xiàng)目必須顯示于選取列表中」。以下這個(gè)范例,就分享一個(gè)最簡單的處理辦法。這邊范例的數(shù)據(jù)庫是使用章立民老師書中的范例中文北風(fēng)數(shù)據(jù)庫,透過用中文的范例數(shù)據(jù)庫,讓大家可以比較親近一些,來了解這個(gè)范例的效果。

如果想在這群DISTINCT 數(shù)據(jù)中隨機(jī)數(shù)選初10筆,則你有可能會(huì)直接聯(lián)想到使用SELECT DISTINCT 員工編號,送貨城市FROM dbo.訂貨主檔Order by newid()? 當(dāng)然因?yàn)镈ISTINCT 內(nèi)在最篩選數(shù)據(jù)時(shí),沒有newid() 則一定會(huì)發(fā)生「如果已指定SELECT DISTINCT,則ORDER BY 項(xiàng)目必須顯示于選取列表中」。

那有可能就會(huì)想說,把newid() 加進(jìn)去SELECT 里面,這樣Order BY 就沒問題了,這樣使用的話,效果可能你會(huì)發(fā)現(xiàn)是跟全部SELECT一樣的效果。

所以說的那么多,解決的方法是什么呢?? 就是把DISTINCT(篩選)與Order By Newid() 隨機(jī)數(shù)排序分成兩個(gè)查詢,在組合在一起,

SELECT TOP 10? *? FROM — 仿真一個(gè)數(shù)據(jù)表(? SELECT DISTINCT 員工編號,送貨城市FROM dbo.訂貨主檔) AS 虛構(gòu)出來的數(shù)據(jù)表Order by newid()

就透過先篩選的子查詢,在使用newid() 就能過將這樣的功能輕松的做出來

SQL Server:

Select TOP N * From TABLE Order By NewID()?? view plaincopy to clipboardprint? Select TOP N * From TABLE Order By NewID()

Select TOP N * From TABLE Order By NewID() NewID()函數(shù)將創(chuàng)建一個(gè) uniqueidentifier 類型的唯一值。上面的語句實(shí)現(xiàn)效果是從Table中隨機(jī)讀取N條記錄。

Access:

Select TOP N * From TABLE Order By Rnd(ID)??? view plaincopy to clipboardprint? Select TOP N * From TABLE Order By Rnd(ID)

Select TOP N * From TABLE Order By Rnd(ID) Rnd(ID) 其中的ID是自動(dòng)編號字段,可以利用其他任何數(shù)值來完成,比如用姓名字段(UserName)

Select TOP N * From TABLE Order BY Rnd(Len(UserName))?? view plaincopy to clipboardprint? Select TOP N * From TABLE Order BY Rnd(Len(UserName))

Select TOP N * From TABLE Order BY Rnd(Len(UserName))

MySql:

Select * From TABLE Order By Rand() Limit 10?? view plaincopy to clipboardprint? Select * From TABLE Order By Rand() Limit 10

Select * From TABLE Order By Rand() Limit 10

postgreSQL:

select * from glxt022 order by random() limit 5?? view plaincopy to clipboardprint? select * from glxt022 order by random() limit 5

總結(jié)

以上是生活随笔為你收集整理的mysql order by newid_order by newid() 随机查询的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。