如何用SQL语句实现两张表(无关联)查询后,分别将各自的一个字段,插入一个新表

五回城出门 2014-03-20 11:23:57
有A、B、C三张表如下,

表 A

学生ID(主键) 学生名称
表B
课程ID(主键) 课程名称
表 C
学生ID 课程ID (联合主键)

那么,通过SQL语句操作如何用学生姓名和课程名(只能获取学生姓名和课程名)将课程ID和学生ID插入到C表(C表中有课程ID和学生ID并且是联合主键),感激不尽。
...全文
3122 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
LongRui888 2014-03-20
  • 打赏
  • 举报
回复
考虑到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)
     
LongRui888 2014-03-20
  • 打赏
  • 举报
回复
或者你的意思是这个吗:

--insert into C(学生ID , 课程ID)
select a.学生ID,b.课程ID
from A
cross join b
where a.学生名称 = 'xxx' and b.课程名称 = 'yyy'
当然这样也行:
--insert into C(学生ID , 课程ID)
select a.学生ID,b.课程ID
from A
inner join b
        on 1=1 and a.学生名称 = 'xxx' and b.课程名称 = 'yyy'
LongRui888 2014-03-20
  • 打赏
  • 举报
回复
试试这个:
insert into C(学生ID , 课程ID)
select a.学生ID,b.课程ID
from A
cross join b
--小F-- 2014-03-20
  • 打赏
  • 举报
回复
C表里面本身没有数据?
--小F-- 2014-03-20
  • 打赏
  • 举报
回复
select
   a.学生名称,b.课程名称
from
   a inner join c on a.学生ID=c.学生ID
      inner join b on b.课程ID =c.课程ID
發糞塗牆 2014-03-20
  • 打赏
  • 举报
回复
但是你这样后期才处理,数据的准确程度不能保证。建议你还是要搞一份对照表,
發糞塗牆 2014-03-20
  • 打赏
  • 举报
回复
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
五回城出门 2014-03-20
  • 打赏
  • 举报
回复
好的用5楼的朋友的建议解决了谢谢大家,由于我的数据库是SQL 2000的所以用不了ROW_NUMBER()所以1楼朋友的运行不出来,也怪我自己没有说清楚,3楼朋友也可以但是没提供插入,由于比较急没有及时回复,再次谢谢大家,结贴了。

22,280

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧