SQL MySQL 中的查询包含数学比较

SQL query in MySQL containing mathematical comparison

我需要一个 SQL 以比较方式使用 table A 上的(随机化)值从 table B 中查找值。 Table A 值以随机方式生成。 Table B值已经按照累积分布函数的方式排序。需要的是 SQL 将从 table B 中获取满足条件的第一行。

Table A:
+----+-------+
| ID | value |
+----+-------+
|  1 | 0.1234|
|  2 | 0.8923|
|  3 | 0.5221|
+----+-------+

Table B:
+----+-------+------+
| ID | value | name | 
+----+-------+------+
|  1 | 0.2000| Alpha|
|  2 | 0.5000| Beta |
|  3 | 0.7500| Gamma|
|  4 | 1.0000| Delta|
+----+-------+------+

Result should be:
+----+-------+------+
| ID | value | name |
+----+-------+------+
|  1 | 0.1234| Alpha|
|  2 | 0.8923| Delta|
|  3 | 0.5221| Gamma|
+----+-------+------+

值0.1234比B的所有值都小,但Alpha值最小

值 0.8923 小于 1.000 --> Delta。

值 0.5221 小于 0.7500 和 1.000,但 0.7500 最小 --> Gamma。

此查询仅在 table A 有一个值时有效:

select value, name
from B
where (select value from A) < value;

关于如何使用完整的 table A 完成这项工作有什么想法吗?

您可以使用子查询来获取您需要的数据:

SELECT a.ID, a.value, 
    (SELECT b.name FROM TableB b WHERE a.value < b.value ORDER BY b.ID ASC LIMIT 1) as name
FROM TableA a

在这种情况下,对于 table A 中的每一行,您会在 table B 中找到第一条记录,该记录在列 value 中具有更大的数字。根据您的要求,运算符 < 可能会更新为 <= - 这取决于您的要求