【问题标题】:PHP: mysql_fetch_array exclude duplicate entriesPHP:mysql_fetch_array 排除重复条目
【发布时间】:2016-05-22 13:46:25
【问题描述】:

我有一行简单的代码,它获取续集数据库并填充类别列表,这些类别字符串来自产品表,因此许多产品行产生重复的类别条目。

$cat_result = $mysqli -> query("SELECT * FROM products");
while ($cat_row = mysqli_fetch_array($cat_result, MYSQL_NUM)) { 
    if($cat_row['4'] != NULL) { 
        print '<li><a href="/category/'. $cat_row['4'] .'">'. $cat_row['4'] .'</a></li>'; 
    }
}

当前的输出是这样的:

  • 类别1
  • 类别1
  • 类别2
  • 类别2

那么我怎样才能抑制重复输入并得到这样的东西呢?

  • 类别1
  • 类别2

感谢您的帮助!

【问题讨论】:

  • DISTINCT 和/或 GROUP BY
  • 嗨@Fred-ii-,再见!所以我必须在必须使用 DISTINCT 的地方执行“SELECT * FROM product GROUP BY category”?
  • $cat_result = $mysqli -&gt; query("SELECT DISTINCT(name) FROM products"); or $cat_result = $mysqli -&gt; query("SELECT * FROM products GROUP BY name");
  • SELECT DISTINCT WhatEverTheColumnIsCalled FROM products 特别是因为你只使用一列,不要检索超过你使用的,你会发现它运行得也更快
  • Ciao Andrea! si 和 SELECT DISTINCT col1, col2 FROM TABLE 按照 dev.mysql.com/doc/refman/5.7/en/distinct-optimization.html - 来吧?

标签: php mysql arrays sorting


【解决方案1】:

以上DISTINCTGROUP BY都可以解决你的问题,所以你可以这样做:-

假设列名是category 那么:-

$cat_result = $mysqli -> query("SELECT DISTINCT(category) FROM products"); 

OR 

$cat_result = $mysqli -> query("SELECT * FROM products GROUP BY category");

注意:- 您也可以按照其他人的建议在DISTINCT 中选择 n 个不同的列。谢谢。

【讨论】:

    【解决方案2】:

    根据要求:

    您可以在 SELECT 和/或 GROUP BY 中使用 DISTINCT

    即:

    SELECT DISTINCT col1, col2 FROM TABLE GROUP BY col_x

    根据http://dev.mysql.com/doc/refman/5.7/en/distinct-optimization.html

    这将避免您的查询出现重复。

    此外,WHERE 子句也可能有用(稍后)。

    即:

    SELECT DISTINCT col1, col2 FROM TABLE WHERE col_x = 'y' GROUP BY col_x
    

    参考:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-29
      • 1970-01-01
      • 2021-01-22
      • 2014-08-01
      • 2013-03-09
      • 2018-10-16
      • 2010-12-17
      相关资源
      最近更新 更多