查询提供错误的结果

时间:2011-07-07 12:32:16

标签: mysql sql where brackets

SELECT `bio_community_groups`.`id`, `bio_community_groups`.`name`, `bio_community_groups`.`description`, `bio_community_groups`.`members`
FROM `bio_community_groups`
WHERE `bio_community_groups`.`category_id` = '1'
AND `bio_community_groups`.`name` LIKE '%rock%'
OR `bio_community_groups`.`description` LIKE '%rock%'

问题:没有ID = 1的群组,但无论如何......它为我提供了名称或描述类似于'%rock%'的所有群组。

也许括号可能对我有帮助?我应该把它们放在哪里?

2 个答案:

答案 0 :(得分:3)

也许这就是你可能正在寻找的东西:

SELECT `bio_community_groups`.`id`, `bio_community_groups`.`name`, `bio_community_groups`.`description`, `bio_community_groups`.`members`
FROM `bio_community_groups`
WHERE
( `bio_community_groups`.`category_id` = '1' )

AND 
( `bio_community_groups`.`name` LIKE '%rock%'
OR `bio_community_groups`.`description` LIKE '%rock%' );

在原始查询中,您将获得满意的结果:

`bio_community_groups`.`description` LIKE '%rock%

无论category_id是什么。

答案 1 :(得分:0)

MySQL中{p> AND位于OR之前。所以你的查询就像(bio_community_groups.category_id = '1' AND bio_community_groups.name LIKE '%rock%') OR (bio_community_groups.description LIKE '%rock%)。只需放置适当的括号即可解决此问题