嵌套Where,Like或者喜欢MySql Query不关心Where子句

时间:2013-03-14 15:09:27

标签: mysql where-clause sql-like

我正在开发一个新项目,对于这个项目,我需要一个存储在我的数据库中的商店的“搜索引擎”。我对商店的名称和地址进行了类似查询,但仅限商店有效(设置为1)。我的查询如下:

SELECT * 
FROM (`shops`) 
WHERE `shop_valid` = 1 
  AND `shop_address` LIKE '%lyon%' 
   OR `shop_name` LIKE '%lyon%' 
ORDER BY `shop_offer` desc 
LIMIT 5

此查询返回的结果与名称和地址一致,但其中一些“shop_valid”设置为0.当我删除商店地址上的子句时,查询适用于所有“shop_valid”设置为1.像这样:

SELECT * 
FROM (`shops`) 
WHERE `shop_valid` = 1 
  AND `shop_name` 
LIKE '%lyon%' 
ORDER BY `shop_offer` desc 
LIMIT 10

希望有人可以帮助我,我被困了一段时间......

谢谢!

1 个答案:

答案 0 :(得分:2)

SELECT * FROM (`shops`) 
WHERE `shop_valid` = 1 
AND (`shop_address` LIKE '%lyon%' OR `shop_name` LIKE '%lyon%') 
ORDER BY `shop_offer` desc LIMIT 5

你必须使用括号。当OR条件的一部分为真时,另一部分无关紧要。