2010-06-12 156 views
1

我有两个字段的表:点,和水平,
一些样本数据如下:
SQL SELECT语句

---------------- -------
Point |等级
-----------------------
10 | 1级
20 | 2级
30 | 3级
40 | 4级

假设有谁拥有25分,
找到该用户是在水平,我用Select语句是一个用户:

Select Level from Table where Point < 30 AND Point > 20; 

但选择SQL ststament是一个硬拷贝
你可以看到字体30和20是固定的。
我想更改Select语句,以便新的SQL Select
语句可以应用于具有不同点的所有用户
,但我不知道该怎么做。

+0

你可能想要一个QUARTILE类型的结果?如果你不编码的话,目标是什么? – Randy 2010-06-13 13:47:35

回答

5
SELECT Level FROM Table WHERE Point<=25 ORDER BY POINT DESC LIMIT 1 

或者

SELECT Level FROM Table WHERE Point>=25 ORDER BY POINT LIMIT 1 

要看什么级别的用户有25点(2或3)。

+1

不应该是SELECT Level FROM表WHERE Point <= 25 ORDER BY POINT DESC LIMIT 1? – Maxem 2010-06-12 08:29:35

+0

@Maxem,你说得对,我更新了答案。我现在测试它。 – 2010-06-12 10:05:46

+0

-1答案不应被编码为25作为硬编码值。 – Randy 2010-06-13 13:46:33

0
select 
    case 
     when point between 20 and 30 then 30 
     /*optionally You can add more Cases */ 
     /*when some other then again other */ 
     else point 
    end as point 
from Table