如何在带有连接列的表达式之间使用

时间:2014-02-25 12:42:51

标签: mysql sql string-concatenation between

我正在尝试从一个表中获取数据。但这是一张旧表,其中有数千行,但是日期列分开。我的意思是,不同列中的月份和年份。

|id | member | month | year | balance |
|-------------------------------------|
|1  | 1001   | 11    | 2013 | 100     |
|2  | 1002   | 11    | 2013 | 120     |
|3  | 1003   | 11    | 2013 | 105     |
|4  | 1001   | 12    | 2013 | 140     |
|5  | 1002   | 12    | 2013 | 130     |
|6  | 1003   | 12    | 2013 | 80      |
|7  | 1001   | 1     | 2014 | 90      |
|8  | 1002   | 1     | 2014 | 20      |
|9  | 1003   | 1     | 2014 | 180     |
--------------------------------------|

这是样本表。我尝试在2013年10月和2014年第2季之间获取数据。

SELECT 
    SUM(balance) 
FROM 
    sample_table 
WHERE 
    CONCAT(month,year) BETWEEN 102013 AND 022014

此查询为我提供了空结果。我怎么能得到真实的结果?任何人都可以给我一个想法。

- 编辑 -

日期范围可以更改。所以,如果我能得到真正的结果,两者之间是最好的解决方案。

1 个答案:

答案 0 :(得分:0)

尝试像这样表达where子句:

SELECT SUM(balance) 
FROM sample_table 
WHERE year*100 + month between 201301 and 201402;

也就是说,将比较作为数字而不是字符串进行。对于字符串,您会遇到引导零以进行正确比较的问题。

更重要的是,使用格式YYYYMM而不是MMYYYY。前者适用于比较,后者则不适用。