【问题标题】:Unknown column xxx in 'field list' when joining tables (MySQL, MariaDB)连接表时“字段列表”中的未知列 xxx(MySQL、MariaDB)
【发布时间】:2019-04-19 03:02:11
【问题描述】:

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

我尝试将三个表格组合在一起并打印出整个表格,它有效!

 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吗?

标签: mysql sql


【解决方案1】:

您可以将 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';

【讨论】:

  • @Yinhao 你得到解决方案了吗?还是我的解决方案对你有用?
【解决方案2】:

尽管 MySQL 没有抛出歧义错误,但 Name 在这里似乎是一个模棱两可的列,因为它在 Subjects 和 Students 中都存在。那么,你能不能试试:

st.name 而不是name?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 2020-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    相关资源
    最近更新 更多