【发布时间】:2015-04-10 07:27:31
【问题描述】:
编辑:这是一个示例关系!我需要它来处理更大的关系,所以没有解决方法!
所以我得到了一个简单的任务,一开始我没有看到什么可能是错误的,现在我只是不明白为什么它不起作用。
假设我有一个人及其朋友的表格,我想选择有 2 个或更多朋友的人。
人
------------------------------
|person | friend | relation |
|-----------------------------
|ana | jon | friend |
|ana | jon | lover |
|ana | phillip| friend |
|ana | kiki | friend |
|mary | jannet | friend |
|mary | jannet | lover |
|peter | july | friend |
我想做一个
SELECT person FROM people GROUP BY person HAVING count(distinct friend) > 1;
得到
-------
| ana |
-------
但在 HAVING 子句中使用“distinct”时出现语法错误。
我知道“distinct”是投影条款的一部分,但是
如何使“count”只计算不同的条目而无需额外的子查询或其他东西?
编辑:我能想到的最好的方法是:
SELECT tmp.person FROM (SELECT person, count(distinct friend)
AS numfriends FROM people GROUP BY person) AS tmp
WHERE tmp.numfriends > 1;
【问题讨论】:
-
Mysql 还是 sqlserver ?
-
嗯,它是 ibm informix 但我认为它在任何 sql db 中都是一样的