家庭作业问题是:编写一个SQL查询以列出所有注册Web和数据库计算的学生的姓名。这里有三个表格:报名情况学生科目 这 3 个表位于名为"注册">的同一数据库中。
我尝试将三个表格组合在一起并打印出整个表格,它有效!
MariaDB [enrolment]> SELECT *
-> FROM students st
-> JOIN enrolments en
-> ON st.student_id=en.student_id
-> JOIN subjects su
-> ON en.subject_code = su.subject_code
-> WHERE su.name='Web and Database Computing';
但是,我只想打印出所有注册 Web 和数据库计算的学生的姓名,所以我更改了代码:
MariaDB [enrolment]> SELECT name FROM students st
-> JOIN enrolments en
-> ON st.student_id=en.student_id
-> JOIN subjects su
-> ON en.subject_code = su.subject_code
-> WHERE su.name='Web and Database Computing';
它给了我错误
错误 1054 (42S22(:"字段列表"中出现未知列"students.name">
您可以将名称替换为 st.name,因为您将别名学生表指定为 st名称替换为 st.name(因为在学生表名称字段中可用以及科目表可用名称,您可以给强制性别名点列名称( 如下...
SELECT st.name
FROM students st
JOIN enrolments en
ON st.student_id=en.student_id
JOIN subjects su
ON en.subject_code = su.subject_code
WHERE su.name='Web and Database Computing';
尽管MySQL没有抛出歧义错误,但名称在这里似乎是一个模棱两可的列,因为它存在于科目和学生中。所以,你能试试:
st.name
而不是name
?