曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3539|回复: 0
打印 上一主题 下一主题

INNER JOIN -- 取得存在连接关系的两表中的记录

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2012-7-5 14:17:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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 是为了语句书写的简洁。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-18 23:04 , Processed in 0.082285 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表