MySQL的。选择年份范围

时间:2011-03-25 19:13:17

标签: php mysql

我有下面列出的数据库。如您所见,每种型号都有多年的使用寿命。例如,Infiniti EX35范围为2008-2010

Infiniti    EX35    2010    3.5 V6
Infiniti    EX35    2009    3.5 V6
Infiniti    EX35    2008    3.5 V6
Infiniti    EX37    2007    3.7i V6
Infiniti    EX37    2008    3.7i V6
Infiniti    EX37    2009    3.7i V6
Infiniti    EX37    2010    3.7i V6
Infiniti    FX35    2003    3.5 V6
Infiniti    FX35    2004    3.5 V6
Infiniti    FX35    2005    3.5 V6
Infiniti    FX35    2006    3.5 V6
Infiniti    FX35    2007    3.5 V6
Infiniti    FX35    2008    3.5 V6

如何进行这样的紧凑选择?

Infiniti    EX35    2008-2010   3.5 V6
Infiniti    EX37    2007-2010   3.7i V6
Infiniti    FX35    2003-2008   3.5 V6

谢谢!

3 个答案:

答案 0 :(得分:2)

类似的东西:

Select Make, Model, Concat(Min(Year),'-',Max(Year)) As Range, EngineType 
From Table
Group By Make, Model

答案 1 :(得分:2)

SELECT Make, Model, 
    CASE
      WHEN MIN(Year) = MAX(Year) 
        THEN MIN(Year)
      ELSE CONCAT(MIN(Year), '-', MAX(Year))
    END As Year,
    OtherColumns
FROM tableName
GROUP BY Make, Model, OtherColumns

答案 2 :(得分:1)

如果我理解你的问题,那么将一个范围放在一个字段中并不是一个好主意 - 它变得非常难以处理,而且它是非标准化的。 Isntead,创建两个字段“start_year”和“end_year”,这样可以轻松选择并使事情正常化。

- 皮特