Sql 根据从搜索中找到的ID数量插入动态行数
我试图在表格中插入未修过某门课程的所有学生的分数(ID、COURSEID、Secu ID、学期、年份、年级)。 我正确地从呼叫表中获取了所需的IDSql 根据从搜索中找到的ID数量插入动态行数,sql,sql-server,Sql,Sql Server,我试图在表格中插入未修过某门课程的所有学生的分数(ID、COURSEID、Secu ID、学期、年份、年级)。 我正确地从呼叫表中获取了所需的ID 从学生中选择ID 其中dept_name=‘计算机科学’ 减 从中选择ID 其中course_id='CS-347'; 然后我用我检索到的这些ID实际插入它,所有其他用于插入的字段都是静态的 insert-into-take 选择ID,'CS-347'作为课程ID,1作为SEC_ID,'Spring'作为学期,2021年作为年级,空作为年级 来自学
从学生中选择ID
其中dept_name=‘计算机科学’
减
从中选择ID
其中course_id='CS-347';
然后我用我检索到的这些ID实际插入它,所有其他用于插入的字段都是静态的
insert-into-take
选择ID,'CS-347'作为课程ID,1作为SEC_ID,'Spring'作为学期,2021年作为年级,空作为年级
来自学生
其中dept_name=‘计算机科学’
减
从中选择ID
其中course_id='CS-347';
然后我得到一个错误:
结果列数不正确
我知道我只是从Student列中提取,但我不确定如何解决这个问题,因为我尝试单独选择ID,但也没有成功。您可以使用此查询:
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');
当您使用减法运算时,两边需要返回相同数量的列。另外,请确保插入了正确的列,最好提及列名Mysql不支持减号运算符,因此此代码不可能用于Mysql。
不在
通常是最好避免的,因为可空列存在问题,最好使用不存在
或除了
@ConnorMills。这个答案强调,虽然集合运算在理论上很有吸引力,但在实践中,它们往往只解决一个问题,而且不太灵活。