这里是我的表结构:如何限制选择只有具有共同价值的行?
// users
+----+--------+
| id | name |
+----+--------+
| 1 | Jack |
| 2 | Peter |
| 3 | John |
| 4 | Barman |
| 5 | Ali |
+----+--------+
// friends
+---------+-----------+
| user_id | friend_id |
+---------+-----------+
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
| 3 | 1 |
| 3 | 2 |
| 3 | 4 |
| 5 | 2 |
+---------+-----------+
-- both user_id and friend_id columns refer to the id column of users table
这里是我的查询:
// $id = 1;
select distinct f1.user_id, f1.friend_id
from friend f1
where user_id = $id
or
user_id in (select f2.friend_id
from friend f2
where user_id = $id);
/* output
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
| 3 | 2 |
| 3 | 4 |
| 5 | 2 |
正如你看到的,我的查询选择
Jack
(因为$id = 1
)- 全部
Jack
的好友 周
- 的
Jack
的朋友
好了所有罚款所有的朋友。实际上,我试图对结果做一个图表。其实我做到了。现在我想限制结果只有常见的朋友。我的意思是我想删除单节点。换句话说,我想选择至少有两条边的朋友。
通过更改查询或者我应该在PHP图层中这样做可能吗?
视觉例子,它的预期输出:
添加SELECT COUNT条件在第二个'选择..'应该做的工作。 – kawadhiya21
更新您的问题,并添加您的选择和预期结果的实际结果..(根据您的数据样本) – scaisEdge
@scaisEdge预期输出添加。 – stack