我正在尝试JOIN
2个表使用不是相应主键的列的列:
SELECT *
FROM TableA A
INNER JOIN TableB B
ON A.col5 = B.col5
但即使我确定0 results
中的Table A
值与col5
col5
中的值相匹配,上面仍然会返回Table B
我做错了什么?
答案 0 :(得分:6)
您查询:
SELECT *
FROM TableA A
INNER JOIN TableB B
ON A.col5 = B.col5;
具有正确的连接语法。如果有匹配的值,那么它将返回它。 (或者,您可以从应用程序中调用它,并且应用程序代码或与数据库的连接可能存在错误,但这是另一个问题。)
某些情况下,值看起来相同但不是:
abc
与ABC1
相同,但SQL不相同。还有两个我能想到的原因,但在所有数据库中可能都不是这样:
答案 1 :(得分:0)
您的查询是正确的,应该返回表中的匹配值。但正如你所说,最后在其他表中的值中存在不可见空间,尝试使用LTRIM和RTRIM从值中删除不可见空间。 LTRIM从字符串的开头删除空格,RTRIM从字符串的末尾删除空格。
查询将如下:
SELECT * 来自TableA A. 内部联合表B B. ON A.col5 = LTRIM(RTRIM(B.col5))
我希望它可以帮助你。