我有一個表看起來像這樣選擇所有,並給隨機輸出(隨機排序輸出)
ID Name City
-------------
0 asd sda
1 hrs gsh
2 ghd 0
3 hsa 0
.
.
我怎麼能回城!=「0」以隨機順序,然後城市=「0」隨機順序?
我有一個表看起來像這樣選擇所有,並給隨機輸出(隨機排序輸出)
ID Name City
-------------
0 asd sda
1 hrs gsh
2 ghd 0
3 hsa 0
.
.
我怎麼能回城!=「0」以隨機順序,然後城市=「0」隨機順序?
對於SQL Server(RAND給SQL Server中的所有行相同值)
ORDER BY
CASE WHEN City <> '0' THEN 1 ELSE 2 END,
NEWID()
謝謝,效果很好! – Mikael 2011-05-10 06:02:31
假設你的DBMS支持在結果集返回不同的隨機數的每一行RAND函數:
SELECT ID, Name, City
FROM SomethingLikeThis
ORDER BY CASE WHEN City = 0 THEN 1 ELSE 0 END, RAND();
在SQL Server中不起作用 – gbn 2011-05-10 05:58:30
@gbn:全世界都沒有使用SQL Server,並且提問者在我回答時沒有說他正在使用哪個DBMS。如果稱爲RAND()的函數是如此確定性的(非隨機的),它爲每一行提供相同的答案,其中一個留下想知道它的用途是什麼。但是,可能有其他功能可以設法產生隨機輸出,或者您可以編寫一個存儲過程來實現這一功能,而且我的答案的一般要點仍然有效:按兩個僞列排序,一個命名城市來在編號之前,另一個大組內的順序是隨機的。 – 2011-05-10 06:04:17
蘭德評估一次*每個查詢*不是「確定性」。我評論說,因爲你的答案有一個upvote,否則我不會困擾。對於其他非確定性函數(如getdate),SQL Server對每個查詢評估也具有相同的評估。 Newid每行都進行評估,因爲它在統計上是獨一無二的 – gbn 2011-05-10 06:10:05
您使用了哪個數據庫?你是否必須以隨機順序返回數據,或者一旦返回就可以洗牌? – Gabe 2011-05-10 05:36:14
你有什麼打算? – BitKFu 2011-05-10 05:37:03
我有一個MS SQL 2008服務器。這個想法是,首先我想以隨機順序輸出我有關信息的所有信息,然後以隨機順序輸出。通過這種方式,我會在丟失一些信息的地方獲得較低優先級,但仍然以隨機順序返回它們。 – Mikael 2011-05-10 05:53:32