SQL查询如何在WHERE子句中选择SELECT数据甚至标准不匹配

时间:2011-03-04 02:25:10

标签: mysql sql datetime-generation

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

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

我按类型和月份对我的查询进行分组,假设我从jan到4月搜索值,在这种情况下,March doenst有任何值,但我仍然希望它显示为0,这样做怎么办? :

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

2 个答案:

答案 0 :(得分:2)

您需要一个包含月份列表的表格(例如month_id,month_name)。然后你可以这样做:

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

否则,查询无法知道“March”之类的内容。

答案 1 :(得分:0)

在sql中进行如下查询:

SELECT * FROM table WHERE (value='0' OR value='yourcondition') AND..