我有一個表具有這種結構:你可以簡化這個查詢嗎?
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