LEFT JOIN帮助MySQL

时间:2014-06-16 11:05:10

标签: mysql sql left-join

[相同的帖子,但有点复杂的问题]

应该很简单,但我遗漏了一些东西。我有2张桌子

table_one(toneid是主键自动增量)

  toneid   id       email
  1        634      45
  2        643      23
  3        648      55

table_two(tid是主键自动增量)

tid
633
634
643
648

我想要的结果应该是

tid      email
633      null
634      45
643      23
648      55

我的查询是

select table_two.tid, 
       table_one.id, 
       table_one.email 
from  table_two 
       left join table_one on table_one.id = table_two.tid

但它正在回归

tid      email    
634      45
643      23
648      55

2 个答案:

答案 0 :(得分:1)

您的表格顺序错误。使用LEFT JOIN,但要使第一个表格成为您要保留所有记录的表格:

select  table_two.tid, table_one.id, table_one.email
from table_two left join
     table_one
     on table_one.id = table_two.tid;

我发现使用left join来连接这些表的结构是最直观的方法。就个人而言,我很难理解混合左,右和内连接的查询。通常你所拥有的是一个“驱动”表,并且首先使它成为编写查询的最清晰的方法。

答案 1 :(得分:1)

你几乎得到了它,只需左转加入:

select table_two.tid, 
       table_one.id, 
       table_one.email 
 from  table_two 
       left join table_one on table_one.id = table_two.tid

总是必须这样读:从表中获取具有更多值的所有内容,并将其与可能具有关联的注册表的内容连接起来。所以在你的情况下,table_two将与table_one结合使用。