Mysql 为什么在执行此SQL查询时会得到重复的列?

Mysql 为什么在执行此SQL查询时会得到重复的列?,mysql,sql,Mysql,Sql,我尝试在mySQL中执行一组查询。在最后一个查询中,我试图选择course_id列,但有两列标题为course_id且值完全相同,因此我遇到一个错误,即 查询错误:错误:ER\U NON\U UNIQ\U错误:字段中的“课程id”列 名单模棱两可 我也不知道如何解决这个问题。我只想让它选择一个名为course\u id的列(不过,我认为这不是最佳实践) 这是我的链接,这是我提出的问题 SELECT ID, course_id FROM teaches; SELECT * FROM classr

我尝试在mySQL中执行一组查询。在最后一个查询中,我试图选择course_id列,但有两列标题为course_id且值完全相同,因此我遇到一个错误,即

查询错误:错误:ER\U NON\U UNIQ\U错误:字段中的“课程id”列 名单模棱两可

我也不知道如何解决这个问题。我只想让它选择一个名为course\u id的列(不过,我认为这不是最佳实践)

这是我的链接,这是我提出的问题

SELECT ID, course_id FROM teaches;

SELECT * FROM classroom WHERE capacity > 50;

SELECT * FROM section;

SELECT DISTINCT course_id FROM (SELECT * FROM classroom WHERE capacity > 50) AS c INNER JOIN section AS s ON c.room_no = s.room_no;


SELECT * FROM teaches AS i INNER JOIN (SELECT DISTINCT course_id FROM (SELECT * FROM classroom WHERE capacity > 50) AS c INNER JOIN section AS s ON c.room_no = s.room_no) AS j ON i.course_id = j.course_id;

-- SELECT course_id FROM teaches AS i INNER JOIN (SELECT DISTINCT course_id FROM (SELECT building, room_no, capacity FROM classroom WHERE capacity > 50) AS c INNER JOIN section AS s ON c.room_no = s.room_no) AS j ON i.course_id = j.course_id;


如果您不需要重复的
课程id
,请使用

SELECT *
FROM teaches i INNER JOIN
     (SELECT DISTINCT course_id
      FROM (SELECT * FROM classroom WHERE capacity > 50) c INNER JOIN 
           section s
           ON c.room_no = s.room_no
     ) c
     USING (course_id);

如果您不需要重复的
课程id
,请使用

SELECT *
FROM teaches i INNER JOIN
     (SELECT DISTINCT course_id
      FROM (SELECT * FROM classroom WHERE capacity > 50) c INNER JOIN 
           section s
           ON c.room_no = s.room_no
     ) c
     USING (course_id);

您需要从哪个表中选择课程id,可以是i.course\u id或j.course\u id

SELECT i.course_id FROM teaches AS i INNER JOIN (SELECT DISTINCT course_id FROM (SELECT building, room_no, capacity FROM classroom WHERE capacity > 50) AS c INNER JOIN section AS s ON c.room_no = s.room_no) AS j ON i.course_id = j.course_id;

由于在内部联接中,它们中的任何一个都将显示相同的数据。

您需要从您想要的课程id的哪个表中选择,无论是i.course\u id还是j.course\u id

SELECT i.course_id FROM teaches AS i INNER JOIN (SELECT DISTINCT course_id FROM (SELECT building, room_no, capacity FROM classroom WHERE capacity > 50) AS c INNER JOIN section AS s ON c.room_no = s.room_no) AS j ON i.course_id = j.course_id;

因为它在内部连接中,它们中的任何一个都将显示相同的数据。

我尝试过,但现在我得到了这个错误
查询错误:错误:ER_派生的\u必须有\u别名:每个派生表必须有自己的别名
我尝试过,但现在我得到了这个错误
查询错误:ER_派生的\u必须有\u别名:每个派生表必须有自己的别名