首页 > 解决方案 > 根据从搜索中找到的 IDS 数量插入动态行数

问题描述

我正在尝试将所有没有参加过特定课程的学生插入到表 TAKES(ID, COURSEID, SEC_ID, SEMESTER, YEAR , GRADE) 中。我通过调用正确地从表中获取了所需的 IDS

select ID from student
where dept_name = 'Computer Science'
minus
select ID from takes
where course_id = 'CS-347';

然后我用我检索到的这些 IDS 实际插入它,并且插入的所有其他字段都是静态的。

insert into TAKES
SELECT ID,'CS-347' as COURSE_ID,1 as SEC_ID,'Spring' as SEMESTER,2021 as YEAR,NULL as GRADE
from student
where dept_name = 'Computer Science'
minus
select ID from takes
where course_id = 'CS-347';

然后我得到一个错误:

结果列数不正确。

我知道我只是从学生栏目中拉出来,但我不确定如何解决这个问题,因为我尝试单独选择 IDS,但也没有奏效。

标签: sqlsql-server

解决方案


您可以改用此查询:

insert into  TAKES (column names)
SELECT
    ID,
    'CS-347' as COURSE_ID,
    1 as SEC_ID,
    'Spring' as SEMESTER,
    2021 as YEAR,
    NULL as GRADE
from
    student
where
    dept_name = 'Computer Science' 
and ID NOT IN  (select
    ID
from
    takes
where
    course_id = 'CS-347');

当您使用减号两边的操作需要返回相同数量的列时。还要确保您插入了正确的列,最好提及列名


推荐阅读