如何检查用户之前回复的帖子是否收到新回复?
问题描述:
比方说,有10个职位,而我已经派人到职位的7响应。当其他用户发送回复帖子时,系统必须检查并告诉我是否有任何帖子收到新回复。系统不会检查其他3个帖子,它会检查我仅回复的7个帖子。如何检查用户之前回复的帖子是否收到新回复?
第1步 - SELECT post-id FROM responsesLive WHERE username='{$myUsername}';
//这会输出很多重复的-ID后,如果我发送多个响应到特定职位。如何防止重复的后ID?
第2步 - 我得到这个职位的编号,7后,我需要在每个7个帖子的最后响应响应ID。我是否需要使用数组来存储7个后ID?或者,我只需要编写,而像以前的查询循环中此查询:
$query3 = "SELECT id FROM responseslive WHERE username='{$myUsername}'";
$result3 = mysql_query($query3,$connection) or die (mysql_error());
confirm_query($result3);
while($postinfo = mysql_fetch_array($result3)){
$post-id= $postinfo['post-id'];
$query4 = "SELECT rsp-id FROM responseslive WHERE postid='{$post-id}' ORDER BY rsp-id DESC LIMIT 1";
$result4 = mysql_query($query4,$connection) or die (mysql_error());
confirm_query($result3);
while($rspinfo = mysql_fetch_array($result4)){
$last-rsp-id= $rspinfo['rsp-id'];
}
}
第3步 - 当时的$last-post-id
比较以前$last-post-id
,如果目前的$last-post-id
比以前$last-post-id
大,然后告诉用户有他之前回复的帖子上的新回复。
答
对于步骤1:
SELECT DISTINCT post-id FROM responsesLive WHERE username='{$myUsername}';
这将只返回不同的IDS交。
对于第2步:
SELECT
postid, max(rsp-id)
FROM
responseslive
WHERE postid in (
SELECT DISTINCT post-id FROM responsesLive WHERE username='{$myUsername}');
GROUP BY
postid
这会给你和阵列的帖子ID和他们最后的答复的ID。
哇,看起来非常简单,漂亮的编码。非常感谢。 – zac1987 2011-06-07 15:54:23
如果我删除“GROUP BY postid”,可以吗?人们说当你有或者可以使用GROUP BY不要使用DISTINCT,因为它会减慢查询... HTTP:如果你想删除“GROUP BY帖子ID” //forge.mysql.com/wiki/Top10SQLPerformanceTips – zac1987 2011-07-05 03:18:19
那么你将不得不从SELECT删除postid。取决于您的结果中是否需要此字段。 – CristiC 2011-07-05 08:07:05