SQL中的简单JOIN

时间:2016-04-09 20:08:39

标签: mysql

我是SQL的新手,因此问题。这是我的两张桌子。

persons
+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| id          | int(11)     | NO   | PRI | NULL    | auto_increment |
| given_name  | varchar(30) | NO   |     | NULL    |                |
| family_name | varchar(30) | NO   |     | NULL    |                |
+-------------+-------------+------+-----+---------+----------------+

courses

+------------+-------------+------+-----+---------+----------------+
| Field      | Type        | Null | Key | Default | Extra          |
+------------+-------------+------+-----+---------+----------------+
| id         | int(11)     | NO   | PRI | NULL    | auto_increment |
| teacher_id | int(11)     | NO   | MUL | NULL    |                |
| name       | varchar(30) | NO   |     | NULL    |                |
+------------+-------------+------+-----+---------+----------------+

这是我简单的JOIN语句,

mysql> SELECT id, given_name, family_name FROM persons, courses WHERE courses.teacher_id = persons.id;

这是我得到的错误,

ERROR 1052 (23000): Column 'id' in field list is ambiguous

我在这里做错了什么。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

您应该按以下方式更改查询:

SELECT persons.id, given_name, family_name 
FROM persons, courses 
WHERE courses.teacher_id = persons.id;

SELECT courses.id, given_name, family_name 
FROM persons, courses 
WHERE courses.teacher_id = persons.id;

取决于您是否需要课程的ID或该人的ID。

答案 1 :(得分:0)

在人员表中包含教师外键以创建教师与人之间的关系。 例如。许多学生都是由老师教授的