简体   繁体   English

SQL错误错误:列“ pk1”指定了多次

[英]SQL error error: column “pk1” specified more than once

Any help? 有什么帮助吗? I can't find where the duplication is happening: 我找不到重复发生的地方:

SELECT * 
FROM attempt 
INNER JOIN gradebook_grade GRADES 
    on(ATTEMPT.gradebook_grade_pk1=GRADES.pk1 )
INNER JOIN gradebook_main GRADES_TITLE 
    on (GRADES.gradebook_main_pk1 = GRADES_TITLE.pk1) 
INNER JOIN course_main Course 
    on (GRADES_TITLE.crsmain_pk1= Course.pk1)  
LEFT JOIN mainJoinedTable2 ENROLLMENT 
    ON (Enrollment.course_users_pk1 = GRADES.course_users_pk1)

You have pk1 column multiple tables so you have to specify which tables pk1 you are going to project in select statement , so you can Try like below 您的pk1列有多个表,因此您必须在select语句中指定要投影的表pk1,因此可以尝试如下所示

 SELECT attempt .* ,GRADES.*,Course.*
    FROM attempt 
    INNER JOIN gradebook_grade GRADES 
        on(ATTEMPT.gradebook_grade_pk1=GRADES.pk1 )
    INNER JOIN gradebook_main GRADES_TITLE 
        on (GRADES.gradebook_main_pk1 = GRADES_TITLE.pk1) 
    INNER JOIN course_main Course 
        on (GRADES_TITLE.crsmain_pk1= Course.pk1)  
    LEFT JOIN mainJoinedTable2 ENROLLMENT 
        ON (Enrollment.course_users_pk1 = GRADES.course_users_pk1)

Quick search brought me there : View error in PostgreSQL 快速搜索将我带到了那里: 查看PostgreSQL中的错误

Basically, you join many tables that have identical column names (in your instance, at least the following : gradebook_grade.pk1 , course_main.pk1 , gradebook_main.pk1 ). 基本上,您gradebook_grade.pk1许多具有相同列名的表(在您的实例中,至少是以下名称: gradebook_grade.pk1course_main.pk1gradebook_main.pk1 )。 The fact that you SELECT * makes it so the output will have many pk1 columns and that will be ambiguous. SELECT *的事实使得它的输出将具有许多pk1列,这将是模棱两可的。 You need to specify each column in your SELECT and rename them with aliases. 您需要在SELECT指定每列,并用别名重命名。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM