C# 连接表MySQL
我有多个表,并做了2个子选择(UserRecord、CustomerRecord),我想将它们合并到一个表中C# 连接表MySQL,c#,mysql,mysql-workbench,C#,Mysql,Mysql Workbench,我有多个表,并做了2个子选择(UserRecord、CustomerRecord),我想将它们合并到一个表中 UserRecord ======================== | RecordID | UserName | ======================== | 1 | Sara | | 1 | Tom | | 2 | Sara | | 2 | Kurt | | 3 | F
UserRecord
========================
| RecordID | UserName |
========================
| 1 | Sara |
| 1 | Tom |
| 2 | Sara |
| 2 | Kurt |
| 3 | Fre |
========================
Table: CustomerRecord
============================
| RecordID | CustomerName |
============================
| 1 | Jef |
| 2 | Alex |
| 2 | Peter |
============================
Table: This should be the result
=======================================
| RecordID | UserName | CustomerName |
=======================================
| 1 | Sara | - |
| 1 | Tom | - |
| 1 | - | Jef |
| 2 | Sara | - |
| 2 | Kurt | - |
| 2 | - | Alex |
| 2 | - | Peter |
| 3 | Fre | - |
=======================================
-=null
我试过左,右,左外,右外。。。加入两张桌子,但我没有得到我想要的
SELECT *
FROM UserRecord AS ur
INNER JOIN CustomerRecord AS cr ON ur.RecordID = cr.RecordID;
您可以使用一个简单的
您想要的不是加入,而是联盟:
SELECT RecordID, UserName, NULL AS CustomerName FROM UserRecord
UNION
SELECT RecordID, NULL AS UserName, CustomerName FROM CustomerRecord
。。。它只是附加两个表中的记录
我要补充的是,订单不会是您在预期结果中显示的订单。如果顺序很重要,那么您应该从此联合中进行选择,并在此外部选择上添加一个明确的ORDERBY子句。比如:
SELECT * FROM (
SELECT RecordID, UserName, NULL AS CustomerName FROM UserRecord
UNION
SELECT RecordID, NULL AS UserName, CustomerName FROM CustomerRecord
) ORDER BY RecordID, UserName, CustomerName
如果表之间没有关系(如您的结果所示),我认为连接不是答案。尝试在从两个表中进行选择时使用并集,空作为不存在的列。使用(完整)
外部联接
。在mysql中,这可能意味着UNION
aRIGHT-OUTER-JOIN
与LEFT-OUTER-JOIN
。作为参考,请参阅:Mysql Workbench不接受完全外部连接或仅接受外部连接谢谢,以前从未使用过用户联盟,但TrickWell i是否需要等待几分钟;)
SELECT * FROM (
SELECT RecordID, UserName, NULL AS CustomerName FROM UserRecord
UNION
SELECT RecordID, NULL AS UserName, CustomerName FROM CustomerRecord
) ORDER BY RecordID, UserName, CustomerName