0

我有一个具有以下 id 值的 navicat 表:

VALUES: (5),(7),(9),(10),(25),(50),(55),(56),(62),(63),(64),(65),(68),(70),(72),(80);

我有一个查询:

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);

但是,查询仅在连续行之间应用公式。我想查询所有可能的组合,其中:((较高的 ID 号 - 较低的 ID 号)* 2)+ 较高的 ID 号等于第三个 ID 号。

例如:

较高的 ID 号 较低的 ID 号 第三个 ID 号 5 25 65 50 55 65 62 63 65

在mysql中可以吗?

谢谢

4

1 回答 1

0

您是否考虑过使用 的三个而不是两个别名my_table,生成一个完整的叉积并将您的条件移至where子句?IE

select
a.id as first_id_number,
b.id as second_id_number,
c.id as third_id_number
from my_table as a, my_table as b, my_table as c
where <your fomula>
于 2012-06-03T08:43:31.647 回答