2012-03-22 137 views
3

我有這樣的查詢中插入行,使用像這樣的子查詢:INSERT查詢與子查詢:列計數不在行匹配值計數1

INSERT INTO Lecture_presence_Student (`presence_id`, `Lecture_id`, `Student_id`, `status`) VALUES 

(
(
    SELECT '' as presence_id, Lecture.Lecture_id, CourseEdition_students_Student.Student_id, 'onverwerkt' 
    FROM 
    CourseEdition_students_Student 
     INNER JOIN Lecture ON CourseEdition_students_Student.CourseEdition_id = Lecture.CourseEdition_id 



    )  
) 

我不明白這一點,子選擇查詢返回4列,與INSERT查詢的編號相同。爲什麼它給我的錯誤:

Column count doesn't match value count at row 1 

任何想法?

+0

您的子查詢是否返回多行? – darren102 2012-03-22 13:49:45

回答

4

而不是使用INSERT INTO VALUES,使用INSERT INTO SELECT FROM

INSERT INTO Lecture_presence_Student 
(
    `presence_id` 
    , `Lecture_id` 
    , `Student_id` 
    , `status` 
) 
SELECT '' as presence_id 
    , Lecture.Lecture_id 
    , CourseEdition_students_Student.Student_id 
    , 'onverwerkt' 
FROM CourseEdition_students_Student 
INNER JOIN Lecture 
    ON CourseEdition_students_Student.CourseEdition_id = Lecture.CourseEdition_id 

那麼如果你在查詢多條記錄,該INSERT會工作。

+0

是的,這是訣竅。值條款必須被刪除。感謝所有的迅速答覆! – 2012-03-22 14:06:29

1
INSERT INTO Lecture_presence_Student (`presence_id`, `Lecture_id`, `Student_id`, `status`) 
SELECT '' as presence_id, Lecture.Lecture_id, CourseEdition_students_Student.Student_id, 'onverwerkt' 
    FROM 
    CourseEdition_students_Student 
     INNER JOIN Lecture ON CourseEdition_students_Student.CourseEdition_id = Lecture.CourseEdition_id  

什麼是空值爲presence_id

1
INSERT INTO Lecture_presence_Student (`presence_id`, `Lecture_id`, `Student_id`, `status`) 

SELECT '', Lecture.Lecture_id, CourseEdition_students_Student.Student_id, 'onverwerkt' 
FROM 
CourseEdition_students_Student 
    INNER JOIN Lecture ON CourseEdition_students_Student.CourseEdition_id = Lecture.CourseEdition_id 

刪除您的「VALUES(())」,別名將不是必需的。

相關問題