0

我使用的是 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'

返回了多个值,并且应该这样做(我想根据子查询的每个返回值执行主查询),但是这样查询将不会被执行。任何的想法?

4

2 回答 2

3

试试这个:

INSERT INTO "Tracking" 
SELECT "studentID",false,4,false
FROM "Student" WHERE "studentClass"='2'
于 2013-03-19T14:08:28.190 回答
1

然后使用INSERT INTO... SELECT语句

INSERT INTO "Tracking" 
SELECT "studentID" , false , 4 , false
FROM   "Student" 
WHERE  "studentClass" = '2'

确保该语句的一件事是确保该表Tracking仅包含 4 列,否则您将获得与提供的值不匹配的列数。INSERT例如,如果您有 4 个以上的列,请在要保存这些值的子句上定义列名。

于 2013-03-19T14:08:38.057 回答