这一定是微不足道的,但需要解释。我无法对Google提出好问题。我不知道是否应该在SQL查询中得到此结果,或者我需要更改包括SQL查询的PHP部分。 (我的知识很小,我正在制作自己的计划程序网站,但是我一直无法创建用于过滤选项的按钮。)
想象一下,我有一个名为“ Records”的表,其中有3列“ ID,Item,Category”。 在类别中,我将所有数据都写成大写,并且类别可以重复。
所以表记录示例如下(在列布局中为:id-item-CATEGORY):
1-睡眠-健康
2-吃早餐-食品和饮料
3-喝 咖啡-食品&饮料
4滴眼药水-健康
5电车 work-TRAVEL
我知道如何列出“类别”列中的所有数据,但我想避免重复类别。我需要获取这样的类别列表(“健康与饮食”不重复):
健康
食品和饮料
旅行
因此,有了这个列表,我可以比通过php生成html select标签选项。 在php部分中,我会使用类似这样的内容:
$query1=mysqli_query($db,"select * from Records asc”);
while($query2=mysqli_fetch_array($query1)){
echo “<option value=“.$query2[‘category_option’].”>”.$query2[‘category_option’].”</option>”
};
因此结果HTML看起来像这样。
<select>
<option value="HEALTH">HEALTH</option>
<option value="FOOD&DRINK">FOOD&DRINK</option>
<option value="TRAVEL">TRAVEL</option>
</select>
能给我指出正确的方向吗?或提及一些最佳实践来实现这种功能。感谢所有尝试提供帮助的人。
答案 0 :(得分:1)
在您的SQL中使用DISTINCT
:
SELECT DISTINCT Category FROM Records
不会返回任何重复项。
在此链接https://www.w3schools.com/Sql/sql_distinct.asp上玩耍
请注意,现在我们只在这里获取一列,而不是*
。
您也可以使用GROUP BY
:
SELECT * FROM Records GROUP BY Category