我的数据库包含type1
,type2
,type3
,type4
字段,一直到type19
,以及其他字段。我想要做的是从这些行中获取所有字段,然后只回显不重复的字段。
我尝试过使用select distinct type1, type2 etc from products
,但不知道将所有字段($_row['type1']
$_row['type2']
等)放入单个变量的PHP代码,然后回显所有不同的值变量。有没有人有任何建议?
答案 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