我有一个类别和项目列表,我想只返回具有一种类型项目的类别。例如:
东西表:
Cat 1 | Item 1
Cat 1 | Item 1
Cat 1 | Item 2
Cat 1 | Item 2
Cat 1 | Item 3
Cat 1 | Item 3
Cat 1 | Item 3
Cat 2 | Item 1
Cat 2 | Item 1
我想返回
Cat 2 | Item 1
我试过了:
SELECT category, item
FROM stuff
GROUP BY category, item
HAVING Count(Distinct item) = 1
但它不起作用。我回来了:
Cat 1 | Item 1
Cat 1 | Item 2
Cat 1 | Item 3
Cat 2 | Item 1
答案 0 :(得分:2)
SELECT category, MAX(item)
FROM Table1
GROUP BY category
HAVING Count(Distinct item) = 1
答案 1 :(得分:1)
您应该从item
子句中删除GROUP BY
并改为运行:
SELECT category, MAX(item)
FROM stuff
GROUP BY category
HAVING COUNT(DISTINCT item) = 1
示例SQLFiddle。
否则,从GROUP BY
子句返回的每个组自然会有一个不同的项目。
答案 2 :(得分:0)
可能您的数据库不允许您在选择中包含既不是也不是聚合的变量。
利用只有一个项目,您可以尝试:
SELECT category, MIN(item) AS item
FROM stuff
GROUP BY category
HAVING Count(Distinct item) = 1