sql - 根据从搜索中找到的 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,但也没有奏效。
解决方案
您可以改用此查询:
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');
当您使用减号两边的操作需要返回相同数量的列时。还要确保您插入了正确的列,最好提及列名
推荐阅读
- javascript - 如何在 web 组件中的 prop 更改后重新渲染?(Javascript香草)
- javascript - 数据表警告:表 id=
- 请求的未知参数' ' 对于第 0 行第 0 列 - reactjs - 更改列宽 Muidatatable
- powershell - Powershell ISE 中的 IF 语句
- python - Python按列下的2个值分组
- ios - React Native Expo - 在 iOS 中跟踪后台位置不起作用
- javascript - 更改另一个元素时使用 jQuery 更改元素
- javascript - 没有在 DOM 中加载的 document.createElement
- regex - sed regexp - 匹配输出中多余的不需要的行
- java - Java (Android) 和 PHP 中的 HMAC_SHA256_BASE64