我试图从组中获得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
,就像它看到第一个条目一样。基本上,我想把各组倒排。
使用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),所以你的排序可能有点不同。我在这里创建了一个示例。