怎么用SQL语句实现两张表(无关联)查询后,分别将各自的一个字段,插入一个新表
如何用SQL语句实现两张表(无关联)查询后,分别将各自的一个字段,插入一个新表
有A、B、C三张表如下,
表 A
学生ID(主键) 学生名称
表B
课程ID(主键) 课程名称
表 C
学生ID 课程ID (联合主键)
那么,通过SQL语句操作如何用学生姓名和课程名(只能获取学生姓名和课程名)将课程ID和学生ID插入到C表(C表中有课程ID和学生ID并且是联合主键),感激不尽。
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
考虑到c表是联合主键,可以这样,判断学生ID 和 课程ID,是否在C表中存在,如果不存在,才插入:
有A、B、C三张表如下,
表 A
学生ID(主键) 学生名称
表B
课程ID(主键) 课程名称
表 C
学生ID 课程ID (联合主键)
那么,通过SQL语句操作如何用学生姓名和课程名(只能获取学生姓名和课程名)将课程ID和学生ID插入到C表(C表中有课程ID和学生ID并且是联合主键),感激不尽。
------解决方案--------------------
SELECT A.学生ID ,
B.课程ID
FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY 学生ID ) ID ,
学生ID
FROM a
) A
INNER JOIN ( SELECT ROW_NUMBER() OVER ( ORDER BY 课程ID ) ID ,
课程ID
FROM B
) B ON A.ID = B.ID
------解决方案--------------------
select
a.学生名称,b.课程名称
from
a inner join c on a.学生ID=c.学生ID
inner join b on b.课程ID =c.课程ID
------解决方案--------------------
考虑到c表是联合主键,可以这样,判断学生ID 和 课程ID,是否在C表中存在,如果不存在,才插入:
--insert into C(学生ID , 课程ID)
select a.学生ID,b.课程ID
from A
inner join b
on 1=1 and a.学生名称 = 'xxx' and b.课程名称 = 'yyy'
where not exists(select 1 from c
where c.学生ID = a.学生ID and c.课程ID = b.课程ID)