0

我确信必须有一个相对简单的方法来做到这一点,但它现在正在逃避我。假设我有一个这样的 SQL 表:

+-----+------+-----+-----+
|type |value |  Monthly  |
+=====+======+=====+=====+
|  a  |  5   |  Jan      |  << a,Jan      
+-----+------+-----+-----+
|  a  |  3   |  Feb      |  << a,Feb      
+-----+------+-----+-----+
|  a  |  7   |  April    |  << a,April    
+-----+------+-----+-----+

我按类型和每月对查询进行分组,假设我搜索从一月到四月的值,在这种情况下,三月没有任何值,但我仍然希望它显示为 0,该怎么做?:

+-----+------+-----+-----+
|type |value |  Monthly  |
+=====+======+=====+=====+
|  a  |  5   |  Jan      |  << a,Jan      
+-----+------+-----+-----+
|  a  |  3   |  Feb      |  << a,Feb      
+-----+------+-----+-----+
|  a  |  0   |  Mar      |  << a,Mar
+-----+------+-----+-----+
|  a  |  7   |  April    |  << a,April    
+-----+------+-----+-----+
4

2 回答 2

2

您需要一个包含月份列表的表格(例如month_id、month_name)。然后,您可以执行以下操作:

SELECT t.*, m.* FROM months m LEFT JOIN table t ON m.month_id = t.month_id

否则,查询无法知道有“March”这样的东西。

于 2011-03-04T02:38:11.910 回答
0

在 sql 中进行如下查询:

SELECT * FROM table WHERE (value='0' OR value='yourcondition') AND..
于 2011-03-04T02:30:05.237 回答