我使用以下两个表加入MySQL:
select TableA.*, TableB.Reason from TableA
left outer join TableB;

我的原始表格是这样的:
Table A
-----+--------+-------+
| ID | Contact| Reason|
+----+--------+-------+
| 1 | Phone | |
| 2 | Mail | |
| 3 | Web | Info |
Table B
-----+-----------+
| ID | Reason |
+----+-----------+
| 1 | Complaint |
| 2 | Info |
| 3 | |

我得到了这个
-----+--------+-----------+---------+
| ID | Contact| Reason | Reason |
+----+--------+-----------+---------+
| 1 | Phone | |Complaint|
| 2 | Mail | | Info |
| 3 | Web | Info | |

但是我期待着这个:
-----+--------+-----------+
| ID | Contact| Reason |
+----+--------+-----------+
| 1 | Phone | Complaint |
| 2 | Mail | Info |
| 3 | Web | Info |

我该怎么做?
答案 0 :(得分:0)
使用
DropForeignKey("dbo.Products", "UserId", "dbo.Users");
AddColumn("dbo.Products", "AcceptedById", c => c.Int());
AddColumn("dbo.Products", "User_Id", c => c.Int());
CreateIndex("dbo.Products", "AcceptedById");
CreateIndex("dbo.Products", "User_Id");
AddForeignKey("dbo.Products", "AcceptedById", "dbo.Users", "Id");
AddForeignKey("dbo.Products", "User_Id", "dbo.Users", "Id");
DropColumn("dbo.Products", "AcceptedByUserId");
答案 1 :(得分:0)
尝试
从TableA中选择TableA.ID,TableA.Contact,TableB.Reason 在TableA.ID = TableB.ID上左连接TableB;
答案 2 :(得分:0)
您需要join
条件:
select a.id, a.contact, b.Reason
from TableA a left join
TableB b
on a.id = b.id;
MySQL之外的任何数据库都需要on
join
。我非常确定MySQL on
需要left join
,所以我希望您的第一个查询生成错误。
答案 3 :(得分:0)
因为您从表A中选择完整数据,这就是为什么您获得空白原因列也会尝试选择您想要显示的数据。
SELECT TableA.ID, TableA.Contact, TableB.Reason from TableA
left outer join TableB on TableA.ID = TableB.ID;
答案 4 :(得分:0)
您不需要更正表之间的关系,也不建议在主键上连接表,当一个表的id与第二个表中的id不匹配时,可能会出现意外结果。