mysql查询在过滤数据时失败了吗?

时间:2013-01-23 11:32:36

标签: mysql sql select

这是我的user_crime_details表:

enter image description here

当我尝试此查询时:

SELECT * 
FROM (`user_crime_details`)
WHERE  `group_id` =  '1'
AND  `insert_date` = CURDATE( ) 
OR  `last_update_date` = CURDATE( ) 
ORDER BY  `id` DESC 

这始终是结果:

enter image description here

您可以看到结果错误,因为group_id不等于1也被选中。 我的查询有问题吗?请帮助。

2 个答案:

答案 0 :(得分:4)

您需要通过在OR部分添加括号来对条件进行分组。

WHERE  group_id =  1  AND  
       (insert_date = CURDATE() OR  last_update_date = CURDATE())

相同
WHERE  group_id =  1 AND CURDATE() IN (insert_date, last_update_date)

PS:列周围的反引号是可选,因为名称不在MySQL的保留关键字列表中。

答案 1 :(得分:2)

结果是错误的,因为条件之后或者每行都是TRUE(last_update_date = CURDATE())

我想你想要这个查询?:

SELECT * 
FROM (`user_crime_details`)
WHERE
   `group_id` =  '1'
AND 
  (
     `insert_date` = CURDATE( ) 
      OR  `last_update_date` = CURDATE( ) 
  )
ORDER BY  `id` DESC