0

我对 SQL 很陌生。

我有两个要合并的表,以下代码有效

SELECT *
FROM confirm
JOIN order ON confirm.email = order.email

但是这个对我不起作用

SELECT *
FROM confirm
JOIN order ON confirm.custid = order.custid

这里的所有内容(电子邮件,custid)都是 VARCHAR(22)。对于第一个,我得到了预期的结果,但第二个没有匹配的结果。email 和 custid 记录在记录之间是可变长度的。我也试过 trim() - 没用。任何指针?

AND custid 采用以下格式 AB12345 - 两个字母和数字

4

2 回答 2

0

正如 Jeremy 在他的评论中所说,如果“custid”不完全匹配,它将不会加入。

示例:表 1:电子邮件:abc@abc.com 客户 ID:AB12345

电子邮件:abc2@abc.com 客户 ID:AB12346

表 2:电子邮件:abc@abc.com 客户 ID:AB12345

电子邮件:abc3@abc.com 客户 ID:AB12347

如果你这样做:

SELECT * FROM TableA A
INNER JOIN TableB B on B.CustId = A.CustId

您的结果将是:电子邮件:abc@abc.com 和 CustId:AB12345

这是因为这些列相互匹配。abc2 和 abc3 在两个表中都不匹配,因此它们不会出现在结果中。

于 2012-05-07T00:34:49.277 回答
0

您首先检查两个表是否存在任何匹配的 custid,如果有应用一些 where 条件并将其过滤掉,例如 select * from tblconfirm where custid="AB1234",就像其他表的情况下的 chck,如果有那么就没有问题,否则不会有结果。

于 2012-05-07T00:35:04.800 回答