查询多对多关系

时间:2016-03-02 23:57:11

标签: mysql

学生存储学生姓名和朋友商店之间关系的列表。

Create table Student (
id int NOT NULL AUTO_INCREMENT,
name varchar(35),
PRIMARY KEY (id)
);

insert into Student (name) values ('John');
insert into Student (name) values ('Kelly');
insert into Student (name) values ('Mary');

Create table Friend (
  id_from int NOT NULL REFERENCES Student(id),
  id_to int NOT NULL REFERENCES Student(id),
  PRIMARY KEY (id_from, id_to)
);

insert into Friend (id_from,id_to) values (1, 3);
insert into Friend (id_from,id_to) values (1, 2);
insert into Friend (id_from,id_to) values (3, 2);

如何在MySql中查询" John"的所有朋友?架构就在这里。

http://sqlfiddle.com/#!9/aeacd/1

1 个答案:

答案 0 :(得分:0)

我创建了一个查询。通常,您可以使用关系表将表与自身连接起来。查询的作用是将StudentFriend加入Student,然后在"John"和{{1}之间的联接表中选择Student.id作为名称的条目}}

查询如下所示:

Friend.id_from.

你可以在这里试试:

http://sqlfiddle.com/#!9/aeacd/15