gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 23:54:36 26 4
gpt4 key购买 nike

我需要一个 SQL 以比较方式使用表 A 上的(随机化)值从表 B 中查找值。表 A 值以随机方式生成。表 B 的数值已经按照累积分布函数的方式排序。 SQL需要从表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。

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

select value, namefrom Bwhere (select value from A) < value;

有什么想法可以让整个表 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

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

关于mysql - MySQL 中包含数学比较的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32033040/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com