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 の not equal to 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 に答える