我有一个数据库,我想在不重复的情况下显示一些结果
<?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";
答案 0 :(得分:6)
您可以在SQL中使用DISTINCT,以避免从数据库中获取重复项,如下所示:
select distinct * from my_table order by subcategory ASC
答案 1 :(得分:3)
select * from rss order by subcategory ASC
首先,扩展通配符是一个很好的实践。列出所有列,而不是使用*
根据您的需要,您有两种方法可以实现:
Select distinct column1,column2 from rss order by subcategory desc
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 DISTINCT
和GROUP 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()
。用它来删除数组中的所有重复项。