从结果中删除重复

时间:2011-11-21 20:00:15

标签: php mysql

我有一个数据库,我想在不重复的情况下显示一些结果

实施例

<?php

    $sql = "select * from my_table order by subcategory ASC";
    $result = mysql_query($sql) or die($qry);
    if (mysql_num_rows($result) == '0') {
        echo "No subcategory";
    } else {
        while ($line = mysql_fetch_array($result)) {
            echo $line[subcategory];
            echo "<br>";
        }
    }

?>

它目前显示所有子类别,即使它们是重复的 问题:我如何过滤结果,使其只显示一个子类别,即使它在那里有4次。

我是否需要在此代码中添加一些内容才能显示而不重复?

$sql ="select * from rss order by subcategory ASC";

6 个答案:

答案 0 :(得分:6)

您可以在SQL中使用DISTINCT,以避免从数据库中获取重复项,如下所示:

select distinct * from my_table order by subcategory ASC

答案 1 :(得分:3)

select * from rss order by subcategory ASC

首先,扩展通配符是一个很好的实践。列出所有列,而不是使用*

根据您的需要,您有两种方法可以实现:

  1. Select distinct column1,column2 from rss order by subcategory desc
  2. select max(column1), max(column2), subcategory from rss order by subcategory desc group by subcategory

答案 2 :(得分:3)

使用GROUP BY

$sql = "select subcategory from rss group by subcategory"

有关详细信息,请参阅手册:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

答案 3 :(得分:3)

查看SELECT DISTINCTGROUP BY

答案 4 :(得分:1)

使用continue;关键字并检查while循环中的重复项

<?php
$sql = "select * from my_table order by subcategory ASC";
$result = mysql_query($sql) or die($qry);
if (mysql_num_rows($result) == '0') {
    echo "No subcategory";
} else {
    while ($line = mysql_fetch_array($result)) {
        if ($dupes[$line['subcategory']])
            continue;
        $dupes[$line['subcategory']]++;


        echo $line['subcategory'];
        echo "<br>";
    }
}
?>

或只使用distinct

$sql ="select distinct * from rss order by subcategory ASC";

答案 5 :(得分:-1)

你应该看看array_unique()。用它来删除数组中的所有重复项。