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

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

表 A

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

那么,通过SQL语句操作如何用学生姓名和课程名(只能获取学生姓名和课程名)将课程ID和学生ID插入到C表(C表中有课程ID和学生ID并且是联合主键),感激不尽。
...全文
3190 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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楼朋友也可以但是没提供插入,由于比较急没有及时回复,再次谢谢大家,结贴了。
资源下载链接为: https://pan.quark.cn/s/9648a1f24758 MySQL SSH隧道连接是一种安全的远程访问MySQL数据库的方式,尤其适用于无法直接远程访问MySQL服务器的场景。通过SSH协议建立安全通道,将本地网络连接转发至远程服务器,从而实现本地对远程数据库的访问,就如同访问本地MySQL服务一样。 如果之前为root用户分配了远程访问权限,出于安全考虑,可以按照以下步骤收回权限: 登录MySQL服务器:mysql -uroot -p。 查看当前用户的远程访问权限:select user, host from mysql.user;。 删除不必要的远程访问权限(例如限制root用户从所有主机访问):delete from mysql.user where user='root' and host='%';。 刷新权限以应用更改:flush privileges;。 再次查询,确认root用户已无法从任何远程主机登录。 接下来,需要建立SSH隧道。通常使用SSH客户端(如OpenSSH)连接到远程服务器,并通过RSA密钥对进行身份验证,这是一种更安全的认证方式。如果本地尚未生成RSA密钥对,需要先生成密钥对,并将公钥(id_rsa.pub)添加到远程服务器的~/.ssh/authorized_keys文件中。建立SSH隧道的命令如下(需替换为实际的IP地址和端口号): 参数含义如下: -N:仅建立隧道,不执行远程命令。 -C:启用压缩(可选)。 -P:使用非特权端口。 -f:建立隧道后在后台运行。 root@192.168.99.52:SSH用户名和目标服务器IP。 -L 3388:127.0.0.1:3306:将本地端口3388映射到远程服务器的MySQL端口3306。 之后,可以使用本地MySQL客户端工具(如MySQL Workben

22,299

社区成员

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

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