联接表(MySQL,MariaDB)时“字段列表”中的未知列xxx

时间:2019-04-19 03:02:11

标签: mysql sql

家庭作业的问题是:编写一个SQL查询以列出所有参加Web和数据库计算的学生的姓名。 这里有三个表:enrolments   students subjects这3个表位于名为 Enrollment 的同一数据库中。

我试图将三个表组合在一起并打印出整个表,它可以正常工作!

 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”

2 个答案:

答案 0 :(得分:2)

您可以将name替换为st.name,因为您给别名students表指定了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';

答案 1 :(得分:0)

尽管MySQL并未引发歧义错误,但Name在这里似乎是一个含糊的栏目,因为它同时存在于Subject和Student中。所以,请您尝试一下:

st.name而不是name