JOIN vs“just”SELECT

时间:2017-04-08 06:54:59

标签: mysql date select join

我有下一张桌子:

date         Income    AccIncome     
--------------------------------    
2016-10-1     10          10         
2017-11-1     20          30    


date         Qty       AccQty     
--------------------------------    
2016-10-1     2          2         
2017-11-1     4          6            


date         Ava       AccAva
--------------------------------    
2016-10-1     3          3         
2017-11-1     4          7

我需要获得:

date       Income AccIncome  Qty   AccQty  Ava  AccAva
------------------------------------------------------
2016-10-1   10      10        2     2       3     3     
2017-11-1   20      30        4     6       4     7

我可以使用所有这些表的select,但是如何通过JOIN完成? JOIN是否比仅仅使用SELECT而不是只选择我需要的字段?

1 个答案:

答案 0 :(得分:1)

如果行中的连接值始终匹配

,则可以在日期使用内部联接
  select a.date, a.income, a.AccIncome, b.Qty, b.AccQty, c.Ava, c.AccAva
  from table1 a
  inner join table2 b on a.date= b.date 
  inner join table3 c on a.date = c.date

或左连接如果不匹配

  select a.date, a.income, a.AccIncome, b.Qty, b.AccQty, c.Ava, c.AccAva
  from table1 a
  left join table2 b on a.date= b.date 
  left join table3 c on a.date = c.date

如果你只使用一个选择加入并且在condtion上你获得了所有行的cartesia产品..所以在你的情况下而不是两行作为结果..你得到8行

并且内部/左侧连接通常比交叉连接(对所有表的选择)要快得多,因为在减少的行o行上工作...以获得帮助,连接性能对于行的正确indexinig是有用的

join中的on子句和where子句中相同的条件执行相同的工作..在第一种情况下,只有一个不同的sintax你有一个明确的连接sintax更清楚,在你有一个隐式连接的secondo中读取。 / p>