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

时间:2018-08-30 16:51:41

标签: sql

有帮助吗?我找不到重复发生的地方:

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)

2 个答案:

答案 0 :(得分:1)

您的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)

答案 1 :(得分:0)

快速搜索将我带到了View error in PostgreSQL

基本上,您联接了许多具有相同列名的表(在您的实例中,至少为以下各项:gradebook_grade.pk1course_main.pk1gradebook_main.pk1)。您SELECT *的事实使之成为事实,因此输出将具有许多pk1列,这将是不明确的。您需要在SELECT中指定每一列,并使用别名重命名。