2

这是我的user_crime_details桌子:

在此处输入图像描述

当我尝试这个查询时:

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

结果总是这样:

在此处输入图像描述

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

4

2 回答 2

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 中的保留关键字列表中。

于 2013-01-23T11:33:32.413 回答
2

结果没有错,因为 or 之后的条件对于每一行都是 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 
于 2013-01-23T11:36:38.187 回答