我正在使用PostgreSQL 9.1,我编写了以下SQL语句:
INSERT INTO "Tracking" VALUES
((SELECT "studentID" FROM "Student" WHERE "studentClass"='2'),false,4,false);
问题在于子查询:
SELECT "studentID" FROM "Student" WHERE "studentClass"='2'
返回多个值,并且它应该这样做(我想按子查询的每个返回值执行主查询),但通过这种方式,查询将不会被执行。有什么想法吗?
答案 0 :(得分:3)
试试这个:
INSERT INTO "Tracking"
SELECT "studentID",false,4,false
FROM "Student" WHERE "studentClass"='2'
答案 1 :(得分:1)
然后使用INSERT INTO... SELECT
声明
INSERT INTO "Tracking"
SELECT "studentID" , false , 4 , false
FROM "Student"
WHERE "studentClass" = '2'
确保此声明的一件事是确保表Tracking
仅包含4列,否则您将获得与提供的值不匹配的列数。例如,如果您有超过4列,请在要保存这些值的INSERT
子句中定义列名称。