2014-11-14 50 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

相关问题