如何在SQL中按多列连接两个表?

Jas*_*ith 10 mysql sql sql-server

我有两个表EvalulationValue

在两个表中,共有四列.但四个中的三个是相同的.换句话说,他们都有CaseNum,FileNum,ActivityNum.除了这些列,Evaluation还有列GradeValueScore.

我想通过合并两成一个表CaseNum,FileNum,ActivityNum所以我有5列的新表都ValueScore它.

我可以Inner Join多次使用吗?

Gan*_*kar 24

答案为是:您可以使用内部联接, 您可以在公共列上创建联接

select E.CaseNum, E.FileNum, E.ActivityNum,E.Grade,V.score from Evalulation E
inner join Value V
ON E.CaseNum=V.CaseNum and
E.FileNum=V.FileNum and 
E.ActivityNum=V.ActivityNum
Run Code Online (Sandbox Code Playgroud)

创建表

Create table MyNewTab(CaseNum int, FileNum int, 
ActivityNum int,Grade int,score varchar(100))
Run Code Online (Sandbox Code Playgroud)

插入值

Insert into MyNewTab Values(CaseNum, FileNum, ActivityNum,Grade,score)
select E.CaseNum, E.FileNum, E.ActivityNum,E.Grade,V.score from Evalulation E
inner join Value V
ON E.CaseNum=V.CaseNum and
E.FileNum=V.FileNum and 
E.ActivityNum=V.ActivityNum
Run Code Online (Sandbox Code Playgroud)


Bar*_*ett 7

不,只需在 1 个内部连接语句的“ON”子句中包含不同的字段:

SELECT * from Evalulation e JOIN Value v ON e.CaseNum = v.CaseNum
    AND e.FileNum = v.FileNum AND e.ActivityNum = v.ActivityNum
Run Code Online (Sandbox Code Playgroud)