MySql连表之多对多
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySql连表之多对多相关的知识,希望对你有一定的参考价值。
背景
每个男生和女生都可以选择自己最喜欢的几个人,可以是多个也可以使一个。
但是,在创建男生表的时候,女生表并没存在,所以不能在创表初期就在男生表中加入其喜爱的女生名单,而且名字冗余,存储浪费空间。
设计表
1、表一:man
2、表二:woman
3、表三:man_to_woman
- 小赵<-->小花
- 小赵<-->小朵
- 小赵<-->小楠
- 小孙<-->小雨
- 小钱<-->小楠
- 小李<-->小花
创建外键
找到小赵喜欢的人
1 SELECT 2 * 3 FROM 4 man_to_woman 5 LEFT JOIN man ON man_to_woman.man_id = man.nid 6 LEFT JOIN woman ON man_to_woman.woman_id = woman.nid 7 WHERE 8 man. NAME = "小赵"
分析:SELECT * from man_to_woman LEFT JOIN man on man_to_woman.man_id = man.nid
从关系表中找到所有man中nid与关系表中的man.id相等的数据,将以man_to_woman为主,man只显示与之向对应的内容,man为字典表。
分析:LEFT JOIN woman on man_to_woman.woman_id = woman.nid
找到与上边结果中的woman_id相等的woman表中nid的所有元素,以上表为主,woman为字典表。
分析:where man.name = "小赵"
找到上边中man的name为小赵的,成功找到他的3个心仪对象
以上是关于MySql连表之多对多的主要内容,如果未能解决你的问题,请参考以下文章