日期:2014-05-16  浏览次数:20975 次

如何用SQL语句实现两张表(无关联)查询后,分别将各自的一个字段,插入一个新表
有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)