我正在尝试从组中获取具有最高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
,因为它看到第一个条目。我想基本上向后排序。
答案 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。