SQL查询条件

时间:2011-02-14 06:55:21

标签: php mysql codeigniter

我有一张这样的表

days    discount    
  3      5.00   
  7     10.00   
10     15.00

最多3天的折扣价格是5卢比.4到7的价格是10卢比等等......我总共没有天数。如果没有天数< 4然后得到5.00。如果没有第4天到第7天那么得到10.如何在sql查询中写条件

4 个答案:

答案 0 :(得分:2)

比如'6'天。你想选择所有折扣,其中表中的天数大于你的6(所以7或10),然后得到最小的(7)。

SELECT discount FROM yourTable
WHERE
days >= '6'
ORDER BY days DESC
LIMIT 1

(正如你所说'3'也有折扣,我假设“4到7”表示包括 7.否则,从查询中删除= < / p>

如评论中所述,如果可以的话,你应该使用准备好的陈述,所以你会做这样的事情:

SELECT discount FROM yourTable
WHERE
days >= ?
ORDER BY days DESC
LIMIT 1

然后绑定那个?到整数。

答案 1 :(得分:1)

您可以创建和使用如下所示的预准备语句:

SELECT discount 
FROM myTable 
WHERE days >= ?
ORDER BY days DESC 
LIMIT 1

答案 2 :(得分:0)

SELECT discount FROM mytable WHERE days > XXXX LIMIT 1其中XXX是您想要的天数。

答案 3 :(得分:0)

您需要在select语句中使用case construct

SELECT CASE numdays 
    WHEN >= 8 THEN 15.0 
    WHEN >= 4 THEN 10.0 
    WHEN < 4 THEN 5.0
    END AS discount