1

我有一个这样的数据库列:

id
50
55
56
62
63
64
65
68
70
72
80

etc...

我想使用以下公式遍历 id 列,以查找公式的结果是否是同一列中的 id 号。我想计算 id 列中基本上 3 条记录的所有可能组合。

第一个循环: ((second_id_number - first_id_number) * variable decimal) + second_id_number 是否等于 id 列中的数字?

根据公式,第一个循环是 (55-50)*2.00(作为变量小数的示例)+ 55 = 65。65 在列表中 => 65 被标记为等于它的 2 条记录

第二个循环: ((third_id_number - first_id_number) * variable decimal) + second_id_number 是否等于 id 列中的数字?(56-50)*2.00(作为变量小数的示例)+ 56 = 78。78 不在列表中 => 78 未标记

第三个循环: ((fourth_id_number - first_id_number) * variable decimal) + second_id_number 是否等于 id 列中的数字?

ETC...

我希望结果显示所有标记的记录。标记记录是 3 条记录的集合,其中第三条记录是公式的结果。

有人有什么想法吗?在mysql中可以吗?

谢谢

4

2 回答 2

0

如果我正确理解您的要求,听起来您想在桌子上使用自联接,例如

SELECT ...
FROM yourtable AS parent
LEFT JOIN yourtable AS child ON
    FLOOR((parent.second_id_number - parent.first_id_number) * variable) + parent.second_id) = child.id
于 2012-05-31T17:04:26.973 回答
0

你可能会携带这样的东西,满足你的第一个“循环”

select a.id as first_id_number
    , b.id as second_id_number
    , ((b.id - a.id) * 2) + b.id as third_id_number
from my_table as a
    join my_table as b on a.id = (select max(id) from my_table where id < b.id)
where ((b.id - a.id) * 2) + b.id in (select id from my_table)

根据您的描述和测试数据,这会将 65 显示为带有 first_id_number 50 和 62 的“标记”。

警告:使用我认为相当标准的语法在 SQL Server 上完成。如果有些人宁愿将其表述为与select max...where 子句中的位而不是连接谓词中的位的交叉连接,我会理解。

于 2012-05-31T17:18:38.677 回答