我有一个结构如下的表:
fake_id start end misc_data
------------------------------------------------------
1 101 105 ab
1 101 105 cd
1 101 105 ef
2 117 123 gh
2 117 123 ij
2 117 123 kl
2 117 123 mn
3 51 53 op
3 51 53 qr
请注意,fake_id 字段并不是真正的主键,而是重复的次数等于 start 和 end 指定的范围内不同奇数的数量。每条记录的真实id 是该范围内的奇数之一。我需要编写一个查询,返回 fake_id、misc_data 和包含这些奇数的另一列以生成真实 id,如下所示:
fake_id real_id misc_data
------------------------------------------
1 101 ab
1 103 cd
1 105 ef
2 117 gh
2 119 ij
2 121 kl
2 123 mn
3 51 op
3 53 qr
据我所知,不能保证序列中不会有间隙(例如,范围 21-31 可能没有记录)。我如何告诉查询(或过程,但查询更可取)对于具有特定 fake_id 的每条记录,它应该返回开始和结束之间的下一个奇数?
另外,有没有办法让 misc_data 的值属于特定的 real_id?以第二个表为例,我如何告诉查询“ab”属于 real_id 101 而不是 103?
提前致谢。