我是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 - 两个字母和数字
答案 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一样表,如果它在那里没有问题,否则不会有结果。