获取组中最高ID的值 - MySQL

时间:2014-10-27 17:10:05

标签: php mysql

我正在尝试从组中获取具有最高ID的行,而不是最低的。我听说你必须做那个JOIN伎俩,但这让我感到困惑,我无法理解它。

到目前为止,我的代码是:

$userp0l=//userID
$where=//forumID
    SELECT * 
    FROM `noti` 
    WHERE forum='$where' 
    AND user <>  '$userp0l'
    GROUP BY user 
    ORDER BY `id` 
    DESC

它有效,但它显示的是组中的第一个条目,而不是最新条目。有谁知道我怎么能改写这个?

我刚才说我会发布我的所有代码,但看着它,其他的并不多。我运行这个声明:

 $elist = mysql_query("SELECT * FROM `noti` WHERE forum='$where' AND user <>  '$userp0l' GROUP BY user ORDER BY `id` DESC") or die(mysql_error());

它从数据库中获取信息。信息被分组,因此当我将数据租借到表格中时,我不会捕获用户两次:

if(mysql_num_rows($elist) > 0){
while($elist_result = mysql_fetch_array($elist)){
  $shownotir=$elist_result['shownoti']; 
  $userr=$elist_result['user'];
  $forumr=$elist_result['forum'];
    if($shownotir=="n"){
            $pps="INSERT INTO `noti`(`user`, `forum`, `shownoti`, `forumn`, `madeby`) VALUES ('$userr', '$where', '0', '$forumn', '$uu')";
        mysql_query($pps) or die(mysql_error());
    }
    else {
        $pps="INSERT INTO `noti`(`user`, `forum`, `shownoti`, `forumn`, `madeby`) VALUES ('$userr', '$where', '1', '$forumn', '$uu')";
        mysql_query($pps) or die(mysql_error());
    }
     }
    }

我需要查看shownoti的最新条目是1还是0。问题是,在分组时,它需要第一个条目而不是最新条目。因此,如果最近的条目的shownoti值为0,但第一个条目值为1,那么它将始终显示1,因为它看到第一个条目。我想基本上向后排序。

1 个答案:

答案 0 :(得分:0)

使用DISTINCT

SELECT DISTINCT `user`, `shownoti`
FROM `noti` 
WHERE forum = '97' 
AND user <> '9797'
GROUP BY `user`, `shownoti`
ORDER BY `id` DESC

你必须记住4(从420)大于1(从1350开始),所以你的排序可能会有所不同。我创建了example here