我有一个具有这种结构的表:
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
它适用于。所以,我的问题是: 我可以只用一个查询做同样的事情吗?
我希望我的解释很清楚,我将不胜感激。提前致谢。