为什么在内部联接 2 个具有相似列名的表时会收到'Duplicate column name'错误?


CREATE TABLE student_activestudent AS 
(
   SELECT * 
   FROM
      student
   INNER JOIN
      activestudent ON activestudent.studentnumber=student.studentnumber
);

我期待一个包含 2 列学生编号的表格,但我收到了重复错误 --> 重复列名称"学生编号">

数据库表必须具有唯一的列名。当您执行select *时,您将从所有表中获取所有列,并且studentnumber student表和activestudent表上都存在。因此,要解决您的问题,请指定所需的列而不是*

 CREATE TABLE student_activestudent AS 
 (
   SELECT
     student.studentnumber,
     ..Other columns..
   FROM
      student
   INNER JOIN
      activestudent ON activestudent.studentnumber=student.studentnumber
 );

至少,studentnumber是重复的。 通常,我强烈建议视图显式列出所有列。 这将在基础列发生更改时保护视图。

也就是说,如果studentnumber是唯一的列,那么您可以执行以下操作:

CREATE TABLE student_activestudent AS 
   SELECT * 
   FROM student s JOIN
        activestudent ast 
        USING (studentnumber);

使用 using 时,*不会重复连接键。

不能选择具有相同列名称的两个表。

最好的方法是不要选择 *

按列选择,如果列相同,则可以输入[as]

选择学生.学生编号作为 stuNumber,活动学生.学生编号作为 actstuNumber

相关内容