连接两个具有相同字段的表并将数据合并到一个字段中(MySQL)

时间:2017-06-21 11:48:42

标签: mysql jointable

我使用以下两个表加入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      |  




我该怎么做?

5 个答案:

答案 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不匹配时,可能会出现意外结果。