比较两个大致相等的数字

coo*_*_cs 6 mysql sql

我有两个表,表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)

  • @cool_cs - 然后公差应该是*变量*. (2认同)

Mic*_*ski 5

你需要设计一些容差,比如说差值为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)