按特定顺序显示MySQL值


Show MySQL values in specific order

所以我有下面的一段代码。

$sql = "SELECT TitreEvent, DescriptionEvent, MomentEvent, image_small, Confidentialite, ID, Creation, Username 
FROM events_home 
WHERE ID = '" . $dnn['IDcontact'] . "' 
ORDER BY Creation DESC";

我的问题是,我想首先显示最近的事件(不管用户是谁)。但现在,事件是根据用户(IDcontact)显示的,并且新的事件被放置在用户部分的开头。

因此,如果用户与表中的第二个用户相似,则他将添加的新事件将显示在第一个用户的事件之后。但我想把最新的活动排在首位,我不知道怎么做。

编辑所以缺少部分。我曾尝试将SORT BY RAND()放在第一个查询中,但它并没有改变任何内容。它只是将第一个用户放在第二个位置,而第二个用户则放在第一个位置。

<?php
     $dn = mysql_query("SELECT IDcontact FROM contacts WHERE ID = '".$_SESSION['id']."'");
     if(mysql_num_rows($dn)>0) 
     {
       while ($dnn = mysql_fetch_array($dn)) {
      $req = mysql_query("select TitreEvent, DescriptionEvent, MomentEvent, image_small, Confidentialite, ID, Creation, Username from events_home where ID = '".$dnn['IDcontact']."' ORDER BY Creation DESC");
      if(mysql_num_rows($req)>0) 
            {
             while($dnn = mysql_fetch_array($req)) {
           ?>

我想您是在上一个查询结果的循环中运行这个。在这种情况下,您需要更改"parent"查询。如果没有这样的东西,那么为什么要根据用户ID对结果进行排序,并期望所有结果而不管用户是谁?

编辑

您永远不应该在循环中运行查询。

<?php
$dn = mysql_query("
SELECT e.TitreEvent, e.DescriptionEvent, e.MomentEvent, e.image_small, e.Confidentialite, e.ID, e.Creation, e.Username,c.IDcontact 
FROM events_home e LEFT JOIN contacts c ON c.ID = e.ID 
ORDER BY e.Creation DESC
LIMIT 0,30"); // Just in case

这是你的问题,希望能有所帮助。