我有两个表,表A和表B.我有两个表L1和L2为每个表.我正在尝试输出两个表的所有行,其中L1和L2对于两个表都相等.问题是L1和L2可能会有所不同.所以当我跑:
SELECT * FROM TableA l1 join TableB l2 on l1.L1 =l2.L1 and l1.L2 = l2.L2
Run Code Online (Sandbox Code Playgroud)
即使有匹配的记录,我也会得到一个空集.我该如何解决这个问题?
例:
表A的L1 = 118.4363,但表B L1 = 118.445428
che*_*ken 13
而不是检查相等性,检查差异是否低于某个阈值(例如,0.1,如下例所示).
SELECT * FROM
TableA l1, TableB l2
WHERE
ABS(l1.L1-l2.L1) < 0.1
AND
ABS(l1.L2-l2.L2) < 0.1
Run Code Online (Sandbox Code Playgroud)
你需要设计一些容差,比如说差值为0.01.然后在减去时计算两者的绝对值,看它是否在你的公差范围内
SET @tolerance_value = 0.01;
SELECT *
FROM
TableA l1 join
TableB l2
on ABS(l1.L1 - l2.L1) < @tolerance_value and ABS(l1.L2 - l2.L2) < @tolerance_value;
Run Code Online (Sandbox Code Playgroud)