0

我正在尝试从表中检索一组独特的类别/子类别关系,并且我想确保我做对了,所以我得到了所有数据。

例如我想要下面的..

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;
4

2 回答 2

1

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

DISTINCT 不是函数!DISTINCT(category)并没有真正在一个列上做一个不同的,就像它可能从语法中出现的那样。正确的写法是:

SELECT DISTINCT category ,subcategory ...;

DISTINCT 是适用于您选择的所有列的修饰符。你不能说有些应该是不同的,但不是其他的。

于 2012-09-04T08:08:02.493 回答
0
SELECT `category`, `subcategory` 
FROM `aall` 
GROUP BY `category`, `subcategory` 
ORDER BY `category`, `subcategory`
于 2012-09-04T08:16:41.373 回答