mysql order by newid_order by newid() 随机查询
在日常作業(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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 市价是什么意思
- 下一篇: linux cmake编译源码,linu