mysql - MySql中的多级数据选择

标签 mysql sql facebook

假设我们有 100 万行的用户表。每个用户有大约 100 个 friend 。所以我们可能会想出一个包含大约 100,000,000 行的 friend 表。

现在,如果一个用户发布了一些东西,并定义了它对他的 friend 和他 friend 的 friend 的分享和可见性...[100*100*100](如 Google+ 圈子),什么是获得这个所需列表的最佳方式最快的方法。 (我的意思是选择类型......如果需要额外的表格......) 非常感谢。

最佳答案

我不知道这是否是最快的方法,但您可以使用Inner Join 来做到这一点。比方说,你想为 user_id=1 的用户检索 friend 和 friend 的 friend ,你可以这样做:

(select friend_id from friends where user_id = 1) 
union 
(select distinct f2.friend_id from friends f1
  INNER JOIN friends f2 on f2.user_id = f1.friend_id
  where f1.user_id = 1)

同样,我不确定这是否是最快的方法,但它比对 Select 使用子查询要好。

编辑:第一个 SELECT 语句将为您提供一个用户列表,这些用户是 id = 1 用户的 friend 。第二个 SELECT 语句将为您提供一个用户列表,这些用户是 id = 1 用户的所有 friend 的 friend = 1. 第二条语句使用了 INNER JOIN .最后,使用 UNION 组合两个结果集。

关于mysql - MySql中的多级数据选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20036652/

相关文章:

用于报告 : IF Record Does Not Exist, 的 MySQL 查询返回字段的 0 值

mysql - 尝试将 .sql 文件导入 phpmyadmin 时出现错误 150

java - 字符串数据,右截断 - Hibernate with Spring Boot

jquery - 通过应用程序 ID 和 Phonegap 的 Facebook 共享器 URL

iOS FBSDKShareLinkContent 分享帖子 - imageURL 未加载移动数据

mysql - 如何获取前20条SQL中某列的百分比?

java - SQL 请求类型

php - 在选择可用房间时使用 MySQL 查询

sql - 配置单元查询 : defining a variable which is a list of strings

ios - Facebook 请求示例项目