我有一个表具有这种结构:你可以简化这个查询吗?
CREATE TABLE IF NOT EXISTS `mydb`.`sizes` (
`id_size` INT NOT NULL ,
`cm_min` INT NOT NULL ,
`cm_max` INT NOT NULL ,
PRIMARY KEY (`id_size`))
ENGINE = InnoDB;
此查询返回的宽度和尺寸5的高度:
select cm_min, cm_max from sizes where id_size = 5;
它们是:
45, 56
那么,我想获得所有cm_min或cm_max在这个范围之间的尺寸。 我因子评分是这样的:
http://sqlfiddle.com/#!2/83e93/51
它的工作原理,但不属于任何范围之间的尺寸。 我的意思是,如果我有这样的:
id_size cm_min cm_max
1 56 59
2 63 67
3 70 74
4 76 79
5 83 86
6 60 62
7 12 14
如果我的id_size 6的价值观,我执行,它会选择返回0行之前的查询,我希望得到的尺寸的id_size虽然不是严格地在这些值之间,但比这更高,更小。在这种情况下,将返回:
id_size cm_min cm_max
1 56 59
2 63 67
或者例如,如果有TE id_size 7这是次要的价值,我需要得到一个次值的值,在我的情况是:
id_size cm_min cm_max
1 56 59
或者,如果我有更高的价值,我会需要大小的ID至少有第二个更高的值。
那么,如果我发布第一个查询不会有任何结果,我这样做: http://sqlfiddle.com/#!2/83e93/32/0
它努力。所以,我的问题是: 我可以只用一个查询来做同样的事情吗?
我希望我在我的解释中很清楚,我会很感激任何帮助。 在此先感谢。
是的,我修改它,它的工作原理:http://sqlfiddle.com/#!2/83e93/32/0。但再读一遍我的第一篇文章,我已经编辑过它,也许你知道一个更好的解决方案。 – harrison4 2013-02-14 12:07:18
看到这个:http://sqlfiddle.com/#!2/83e93/53如果这可以帮助 – Minesh 2013-02-14 12:28:19
真的感谢Minesh,但它返回1和2个ID。 id_size 5的值是83和86.是最高的,所以它会返回第二个最高值的id。我在第一篇文章中解释它。 – harrison4 2013-02-14 12:42:52