Mysql 为什么在执行此SQL查询时会得到重复的列?
我尝试在mySQL中执行一组查询。在最后一个查询中,我试图选择course_id列,但有两列标题为course_id且值完全相同,因此我遇到一个错误,即 查询错误:错误:ER\U NON\U UNIQ\U错误:字段中的“课程id”列 名单模棱两可 我也不知道如何解决这个问题。我只想让它选择一个名为course\u id的列(不过,我认为这不是最佳实践) 这是我的链接,这是我提出的问题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
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别名:每个派生表必须有自己的别名