INNER JOIN 称为内连接,它可以用来取得两个存在连接关系的表中的记录。下面以 phpwind8.7 论坛程序为例,来看一下比对一下存在连接关系的两个表:
pw_members 是会员信息表,它拥有多个会员信息字段,比如 uid, username, password 等,下图之列出一部分字段:
pw_friends 是会员的朋友关系表,也就是说会员和会员之间可以互相添加为朋友,也可以解除朋友关系,关于此类信息存储在该表中,其字段如下:
![]()
这两个表中存在的对应关系为: pw_members 和 pw_friends 中的 uid 都表示会员的 ID ;而 pw_friends 中的 friendid 也是 uid 的另外表达形式,可以从左到右读作:`uid` 和 `friendid` 的关系可以从左到右解读,如 uid 为 10 的朋友的 uid 分别有 11, 2276, 2236, 2293 这几个。 |
因此 pw_members 中的 uid 和 pw_friends 中的 friendid 是存在着连接关系的。下面就利用这层连接关系找出 UID 为 10 的用户的所有朋友:
[Plain Text] 纯文本查看 复制代码 SELECT a.friendid, b.username FROM pw_friends a INNER JOIN pw_members b ON a.friendid = b.uid WHERE status = 0 AND a.uid = 10;
实际上,如果使用的是 INNER JOIN ,那么上面的语句可将 INNER 去掉,只用 JOIN 即可。
对于上面的语句,a 和 b 分别指代了 pw_friends 和 pw_members 这两个表,使用 a 和 b 是为了语句书写的简洁。 |