Sql 正确使用Group By、Count和Having

Sql 正确使用Group By、Count和Having,sql,Sql,我有一个类别和项目的列表,我只想返回具有一种项目类型的类别。例如: 填充表: 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 catego

我有一个类别和项目的列表,我只想返回具有一种项目类型的类别。例如:

填充表:

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

您应该从
GROUP BY
子句中删除
,并运行以下命令:

SELECT category, MAX(item)
FROM stuff
GROUP BY category
HAVING COUNT(DISTINCT item) = 1
例如


否则,从
group BY
子句返回的每个组自然都会有一个不同的项。

您应该从
group BY
子句中删除
,并运行以下操作:

SELECT category, MAX(item)
FROM stuff
GROUP BY category
HAVING COUNT(DISTINCT item) = 1
例如


否则,从
group BY
子句返回的每个组自然都会有一个不同的项。

您应该从
group BY
子句中删除
,并运行以下操作:

SELECT category, MAX(item)
FROM stuff
GROUP BY category
HAVING COUNT(DISTINCT item) = 1
例如


否则,从
group BY
子句返回的每个组自然都会有一个不同的项。

您应该从
group BY
子句中删除
,并运行以下操作:

SELECT category, MAX(item)
FROM stuff
GROUP BY category
HAVING COUNT(DISTINCT item) = 1
例如


否则,从
group BY
子句返回的每个组自然会有一个不同的项。

您的数据库可能不允许您在select中有一个既不在group BY中也不在group BY中的变量

利用仅有一个项目的优势,您可以尝试:

SELECT category, MIN(item) AS item
FROM stuff
GROUP BY category
HAVING Count(Distinct item) = 1

可能您的数据库不允许您在select中包含既不在group by中也不在group by中的变量

利用仅有一个项目的优势,您可以尝试:

SELECT category, MIN(item) AS item
FROM stuff
GROUP BY category
HAVING Count(Distinct item) = 1

可能您的数据库不允许您在select中包含既不在group by中也不在group by中的变量

利用仅有一个项目的优势,您可以尝试:

SELECT category, MIN(item) AS item
FROM stuff
GROUP BY category
HAVING Count(Distinct item) = 1

可能您的数据库不允许您在select中包含既不在group by中也不在group by中的变量

利用仅有一个项目的优势,您可以尝试:

SELECT category, MIN(item) AS item
FROM stuff
GROUP BY category
HAVING Count(Distinct item) = 1

你说得对,我又试了一次,效果很好。谢谢你说得对,我又试了一次,效果很好。谢谢你说得对,我又试了一次,效果很好。谢谢你说得对,我又试了一次,效果很好。谢谢