输出行没有重复

时间:2012-11-26 23:01:07

标签: php mysql select distinct

我正在尝试输出最近的行,但没有显示任何重复行。我的表有一个唯一的id(note_id)和issue_id,可以分配给多个(note_ids);这样每个条目都是唯一的,但可以与常见问题相关联。

这是我的代码:

$issueSelect = "SELECT DISTINCT issue_id FROM notes WHERE assigned = '$loginID' ORDER BY note_id ASC";
    $issueQuery = mysql_query($issueSelect);

然后我在while循环中有一个输出语句:

while ($issueResult = mysql_fetch_assoc($issueQuery)){
$issueID = $issueResult['issue_id'];
$issue = $issueResult['issue'];
      if ($issue == "open" or $issue == "assigned"){
                echo"<td align='right'><a href=\"note_details.php?note_click=$issueID\">$issueID</td>";

}

出于某种原因,我一无所获......当我只是把SELECT *显示出来的东西,但它包含了重复项(我不想要)。

我遗失的任何东西可能是为什么这不起作用?

4 个答案:

答案 0 :(得分:1)

那么,您使用的是note_idissue_id的复合键?您应该尝试使用GROUP BY功能:

SELECT `issue_id`, `issue` FROM `notes` WHERE `assigned` = '$loginID' GROUP BY `note_id`, `issue_id` ORDER BY `note_id` ASC;

此外,mysql_*现已弃用,您不应该使用它。查找PDO和mysqli

答案 1 :(得分:0)

由于$issuenull,您无法获得任何结果。您可以使用group by issue_id代替distinct,但它是非标准的,可能会也可能不会根据您的安装而有效。

如果它不起作用,您可能需要使用select *,然后在PHP中过滤重复项。

答案 2 :(得分:0)

必须实际选择问题字段(在我想要显示的其他字段中......这就是我所做的:

$issueSelect = "SELECT DISTINCT issue_id, issue, reason, customer_id, order_id, return_id, author_id FROM notes WHERE assigned = '$loginID' ORDER BY note_id ASC";
    $issueQuery = mysql_query($issueSelect);
    while ($issueResult = mysql_fetch_assoc($issueQuery)){
$issueID = $issueResult['issue_id'];
        $issue = $issueResult['issue'];
        $assigned = $issueResult['assigned'];
        $openDate = $issueResult['date'];
        $closeDate = $issueResult['close_date'];
        $orderID = $issueResult['order_id'];
        $returnID = $issueResult['return_id'];
        $customerID = $issueResult['customer_id'];
        $authorID = $issueResult['author_id'];
        $reason = $issueResult['reason'];
}

感谢所有帮助人员...我会调查POD&amp; MySQLi

答案 3 :(得分:0)

您的原始查询是:

SELECT DISTINCT issue_id FROM notes WHERE assigned = '$loginID' ORDER BY note_id ASC

我认为由于ORDER BY子句,这会产生多行。您隐含地使用note_id扩展选择列表,然后排序,然后将note_id投射出去,但是针对单个问题有多个注释,因此您有多个行被返回尽管有DISTINCT(因为DISTINCT在ORDER BY之前完成),因此单个问题。