首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >语句将三个表与char列条件组合。

语句将三个表与char列条件组合。
EN

Stack Overflow用户
提问于 2017-06-25 05:23:18
回答 1查看 32关注 0票数 1

我必须修复一个设计很差的数据库。

问题:

一份工作广告有一个职位,但有许多合格的学位。

(例如,职称:分析员,资格:会计学位,金融学学位或商业学位)

表:

TableName: UniqueJobName列: jobName(char) uniqueJobUid(bigint)

TableName: UniqueDegree列: degreeName(char) degreeUid(bigint)

TableName:作业栏: jobName(char) jobUid(bigint),uniqueJobUid(bigint)

TableName: Job_Degree: jobUid(char) degreeName(char)

关系

单细胞瘤UniqueJobName.uniqueJobUid -> Jobs.uniqueJobUid

onetomany Jobs.Jobs> Job_Degree.jobUid

乔布斯和UniqueDegree之间没有任何关系。

技术要求

我不想在Job_Degree中为degreeUid创建一个列,而是创建一个新的表: UniqueJob_UniqueDegree_Job (这其中有我不想解释的原因)

UniqueJob_UniqueDegree_Job将有三列:

  • uniqueJobUid
  • jobId
  • degreeId

问题是作业表已经很大了,500,000行( Job_Degree表更大)

问题:考虑到语句的一部分是比较UniqueDegree.degreeName和Job_Degree.degreeName的char列,那么创建UniqueJob_UniqueDegree_Job表的最有效的SQL语句是什么?

任何提示都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2017-06-25 07:24:25

代码语言:javascript
复制
 select j.jobname, j.jobuid, ud.degreeid
 into UniqueJob_UniqueDegree_Job
 from jobs j 
 join job_degree jd on j.jobuid = jd.jobuid 
 join uniquedegree ud on ud.jobname = jd.jobname

很难弄到大写字母等等,因为我用的是一文不值的手机。

然而,这应该做到这一点。注意:为了做选择.无法从表中创建数据类型(可以对select语句中的每个属性进行转换或强制转换,以确保数据类型正确无误。

如果表已经存在,则将查询更改为

代码语言:javascript
复制
insert Into .. 
select ...
from .... 

500 K行也相当小。我估计这不会超过几秒钟。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44743456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档