来自PHP / MYSQL查询的唯一/不同值

时间:2011-07-20 04:28:34

标签: php mysql database unique distinct

我的数据库包含type1type2type3type4字段,一直到type19,以及其他字段。我想要做的是从这些行中获取所有字段,然后只回显不重复的字段。

我尝试过使用select distinct type1, type2 etc from products,但不知道将所有字段($_row['type1'] $_row['type2']等)放入单个变量的PHP代码,然后回显所有不同的值变量。有没有人有任何建议?

3 个答案:

答案 0 :(得分:3)

如果您只想使用SQL查询,可以说

SELECT DISTINCT type1 FROM products ORDER BY type1 

另一种选择是

SELECT type1, max(1) FROM products GROUP BY type1 

缺点是,如果要为所有列获取不同的值,则必须执行19个查询。

好处是,如果你想要一列的不同值,那就容易多了。

您可以将19个查询批处理为for循环,可能是:

for($i=1;$i<20;$i++) {
  $sql = "SELECT DISTINCT type".$i." FROM products ORDER BY type1";
  // Run the sql query to get the data, then manipulate it as you wish.
}

答案 1 :(得分:3)

循环搜索结果并将其添加到数组中。然后使用array_unique()仅返回唯一值。

http://php.net/manual/en/function.array-unique.php

如果可能的话,你绝对应该重新考虑你的数据库设计,因为这是一个非常糟糕的做事方式。

答案 2 :(得分:0)

使用UNION将19个查询的结果作为子查询加入。

SELECT DISTINCT a FROM (
  SELECT DISTINCT type1 AS a FROM products
  UNION
  SELECT DISTINCT type2 AS a FROM products
  UNION 
  ...
  SELECT DISTINCT type19 AS a FROM products
) ORDER BY a