我有一个类别和项目的列表,我只想返回有一种类型的项目的类别。例如:
料理桌:
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
发布于 2014-03-08 18:54:32
您应该从item
子句中删除GROUP BY
,然后运行以下命令:
SELECT category, MAX(item)
FROM stuff
GROUP BY category
HAVING COUNT(DISTINCT item) = 1
例如SQLFiddle。
否则,从GROUP BY
子句返回的每个组自然会有一个不同的项。
发布于 2014-03-08 18:55:47
SELECT category, MAX(item)
FROM Table1
GROUP BY category
HAVING Count(Distinct item) = 1
发布于 2014-03-08 18:55:10
可能您的数据库不允许在select中有一个变量,该变量既不属于组也不聚合。
利用只有一个项目的优势,您可以尝试:
SELECT category, MIN(item) AS item
FROM stuff
GROUP BY category
HAVING Count(Distinct item) = 1
https://stackoverflow.com/questions/22273504
复制相似问题