提问者:小点点

带有两个表的左外部连接MySQL


下面是我的示例表。

事件表:-

id    eventName        modelId     sheetId

1     Input edit        1           2
2     Formula edit      2           1
3     Delete model      null        3
4     Delete sheet      3           null

型号表:-

id     modelName
1       test1
2       test2
3       test3

工作表:-

id      sheetName
1       testSheet1
2       testSheet2
3       testSheet3

现在我的要求总是我需要来自事件表的所有记录,我需要(事件表的所有列+modelName和sheetName)。

下面的查询我已经写好了,但是这个查询没有给出预期的输出,虽然我知道我需要使用左外部联接,但是我不能这样做:-

select
  e.id,e.eventName,e.modelId,e.sheetId,m.modelName,s.sheetName 
from
  Event e,
  Model m,
  Sheet s 
where e.modelId=m.id and e.sheetId=s.id;

预期产出:-

id    eventName        modelId     sheetId    modelName    sheetName

1     Input edit        1           2          test1       testSheet2
2     Formula edit      2           1          test2       testSheet1
3     Delete model      null        3          null        testSheet3
4     Delete sheet      3           null       test3        null

共1个答案

匿名用户

应该是非常基本的查询:

select
  e.id,e.eventName,e.modelId,e.sheetId,m.modelName,s.sheetName 
from
  Event e
left join 
  Model m on m e.modelId=m.id
left join
  Sheet s on e.sheetId=s.id;