2011-07-07 113 views
0
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%'查询是给错误的结果

也许括号可以帮助我吗?我应该把他们放在哪里?

回答

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可能。

0

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