SQL JOIN奇怪的行为

时间:2012-05-07 00:20:37

标签: sql join

我是SQL新手。

我有两个要合并的表,以下代码可以使用

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

但是这个对我不起作用

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

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

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

2 个答案:

答案 0 :(得分:0)

正如杰里米在评论中所说,如果“custid”与之完全不符,那就不会加入。

实施例: 表格1: 电子邮件:abc@abc.com CustId:AB12345

电子邮件:abc2@abc.com CustId:AB12346

表2: 电子邮件:abc@abc.com CustId:AB12345

电子邮件:abc3@abc.com CustId:AB12347

如果你这样做:

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

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

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

答案 1 :(得分:0)

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

相关问题