从表中获取唯一的类别/子类别对

时间:2012-09-04 08:02:32

标签: mysql distinct

我正在尝试从表中检索一组唯一的类别/子类别关系,我想确保我做得对,这样我就可以获得所有数据。

例如我想要以下..

Animals -> Dogs
Animals -> Cats
Animals -> Reptiles
Cars -> Ford
Cars -> Toyota
Cars -> BMW

我不希望列出任何重复的子类别,但如果它们属于另一个类别,则需要重复的类别,例如..

Animals -> Dogs
Animals -> Cats
Animals -> Reptiles
Animals -> *General*
Cars -> Ford
Cars -> Toyota
Cars -> BMW
Cars -> *General*

我有以下代码,似乎运行良好,但只想检查这是否是正确的方法。

SELECT DISTINCT(category),subcategory FROM aall ORDER BY category ASC, subcategory ASC;

2 个答案:

答案 0 :(得分:1)

是的,这将返回category, subcategory的明确列表但是,您需要知道一件重要的事情:

DISTINCT不是一个功能! DISTINCT(category)并不像在语法中看到的那样在一列上做出明显的分析。写这个的正确方法是:

SELECT DISTINCT category ,subcategory ...;

DISTINCT是一个修饰符,适用于所有您选择的列。你不能说有些应该是独特的,而不是其他的。

答案 1 :(得分:0)

SELECT `category`, `subcategory` 
FROM `aall` 
GROUP BY `category`, `subcategory` 
ORDER BY `category`, `subcategory`