1
1
count(*)查询返回可以算术添加的标量。不需要使用UNION(这是一个SET操作)。 |
2
0
我想你想说的是,S是普通朋友的数量,而不是1个人或2个人的朋友总数。 也许其他人会给你正确的SQL,但这里有一些伪代码,我想可以得到这两个数字:
|
3
0
|
4
0
在多个步骤中处理这个问题可能更容易,这样您就可以看到并检查中间输出。 您需要一个带有userID pk的用户表,并且需要将它与自身交叉连接(完全外部连接)以获取所有的伙伴对,除了添加到where子句以排除userID=userID(自身)所在的行。没有人是他们自己的好友或自称为好友。)这定义了所有可能的好友连接集。 您已经有了一组好友的每月连接表,呼叫buddy->呼叫buddy。这定义了一种类型的伙伴连接。
您需要一个月连接表的第三个实例,其中包含2个月连接表实例,它们连接在被调用字段上。确保在where子句中排除两个表中调用用户相等的行。如果两个不同的用户调用同一个第三个用户,则定义第三种类型的好友连接。 现在您可以确定每对好友的共同好友数。这是这三个集合的行数加在一起。
|
Community wiki · SQL语法新手 1 年前 |
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |