[相同的帖子,但有点复杂的问题]
应该很简单,但我遗漏了一些东西。我有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
答案 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结合使用。