1

我正在做一个新项目,对于这个项目,我需要一个存储在我的数据库中的商店“搜索引擎”。我对商店的名称和地址进行了 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

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

谢谢!

4

1 回答 1

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条件的一部分为真时,另一部分无关紧要。

于 2013-03-14T15:12:13.487 回答