2014-11-14 42 views
0

我需要運行ORDER BY RAND查詢,然後對結果數據集進行數值排序。換句話說,我想要一個隨機數據集(在這個例子中是7個數字),但是我需要對這7個結果進行數字排序。得到一個隨機的查詢結果,然後對它進行排序

運行此代碼後:

if ($today == "Oct 31") { 

    $dayList = "halloween"; 
    $stmt = $pdo->query("SELECT `rand` FROM `jukebox2014` 
      WHERE `class` = '$dayList' ORDER BY RAND() LIMIT 7"); 
} 

我需要7對結果進行排序。

有什麼建議嗎?

謝謝。

+0

所以,你正在試圖做的是取1,7,3,4,2,5,6,然後命令他們返回1 - 7? – Peter 2014-11-14 14:03:35

+0

你有沒有試圖自己做這個? – 2014-11-14 14:04:06

+0

是的,我一直在嘗試2天。沒有任何工作。 – Pavlis 2014-11-14 14:42:00

回答

1

簡單:

SELECT `rand` 
FROM (
    SELECT ... ORDER BY RAND() LIMIT 7 
) 
ORDER BY `rand` 

這並不是說ORDER BY RAND() LIMIT 7是選擇隨機數據相當低效的方法;更有效的方法將取決於您的確切數據。搜索Stackoverflow有關此主題的許多問題。

+0

這不起作用,但也許我不太明白你建議的語法。我想我應該把我的原始問題發佈到所有的代碼中。這是代碼(包含您的建議)。 if($ today ==「Oct 31」){$ dayList =「halloween」; $ stmt = $ pdo-> query(「SELECT'rand' FROM'jukebox2014' WHERE'class' ='$ dayList'ORDER BY RAND()LIMIT $ limit ORDER BY'rand'」);} $ fh = fopen(「 dataPDO.txt「,」w「); while($ row = $ stmt-> fetchObject()){fwrite($ fh,$ row-> rand。「,」);} fclose($ fh);出口(); – Pavlis 2014-11-14 15:01:16

+0

這工作!花了我一段時間來弄清楚正確的語法,但它工作得很好。我會盡快研究RAND()方案。 – Pavlis 2014-11-15 15:46:07

+0

這是一個很好的資源,我感謝你的幫助。 – Pavlis 2014-11-15 15:47:17

0

我認爲這是你的意思。

$new = array(); 
foreach ($results as $result) { 
    $new[] $result['rand']; 
} 

$sorted = ksort($new); 
+0

欣賞所有幫助(很快),併爲愛好者的無知道歉。我應該包括所有的代碼。這是缺少的。它是編寫(希望)排序數組到文本文件的代碼。 --- $ fh = fopen(「dataPDO.txt」,「w」); while($ row = $ stmt-> fetchObject()){fwrite($ fh,$ row-> rand。「,」);} fclose($ fh);出口(); – Pavlis 2014-11-14 15:04:24

相關問題