嗨,堆栈溢出的新人,所以如果我没有正确地呈现这一点,我很抱歉。
我使用过 Google、W3schools 并阅读了 SQL 上的 FQA。
我正在 WAMP2.0 中使用 SQL 命令行运行 SQL。我目前正在做一个项目,目标是创建一个最小的大学数据库。包含学生、成绩、类(class)、模块等
任务之一是列出所有学生、模块和相应的成绩。为此,我尝试使用 JOIN 命令从学生表中选择所有姓名,以及记录表中的所有相应模块 + 成绩。
+------------+-------+------------+-----------------+
| Student_id | Name | DOB | Address |
+------------+-------+------------+-----------------+
| 4665236 | Paddy | 1985-09-18 | 123 Fake Street |
| 5665236 | Paul | 1984-06-12 | Good manlane |
| 6665236 | John | 1984-03-09 | Docotor town |
| 7665236 | Aidan | 1983-07-09 | Banker worlds |
| 8665236 | Joe | 1983-07-09 | 24 hitherwood |
+------------+-------+------------+-----------------+
+------------+--------+------+-------+
| Student_id | Mod_id | GPA | Grade |
+------------+--------+------+-------+
| 4655236 | 2222 | 3.84 | A- |
| 5655236 | 11111 | 3.44 | B+ |
| 6655236 | 33333 | 3.24 | B |
| 7655236 | 44444 | 2.45 | C- |
| 8655236 | 44444 | 2.45 | C- |
+------------+--------+------+-------+
学生表中的主键是 Student_id INT 11
记录的主键是(Student_id,Mod_id)
单独的 SELECT FROM 语句在两个表上都可以正常工作。
使用时出现问题
SELECT students.Name, records.Grade
FROM students
INNER JOIN records
ON students.Student_id=Student_id
ORDER BY students.Name
我收到以下错误
ERROR 1052 (23000): Column 'Student_id' in on clause is ambiguous
感谢您对我尝试过的快速响应
SELECT students.Name, records.Grade FROM students INNER JOIN records ON students.Student_id=records.Student_id ORDER BY students.Name;
得到了 ---- 空集(0.00 秒)?
最佳答案
您必须使用别名(例如 records.studentId
)对该列 Student_Id
进行限定,以便它在 ON
中不会出现歧义子句,或:
SELECT s.Name, r.Grade
FROM students AS s
INNER JOIN records AS r ON s.Student_id= r.Student_id
ORDER BY s.Name
关于sql - JOIN 命令的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15434929/