我在检索数据库中的数据时遇到问题。
问题:为什么我仍要检索具有store_status 已删除的数据,但我的条件是store_status =“仅活动”
这是我的脚本样子
SELECT * FROM store_locator WHERE store_status = 'Active' AND store_address LIKE '%Q%'
OR branch_name LIKE '%Q%' OR city LIKE '%Q%'
和示例图片 sample image
答案 0 :(得分:0)
这很可能是因为您的branch_name中有一个Q或城市中有一个Q。 OR条件确保即使AND条件为假,记录仍可以显示。 您的查询实际上正在运行:
SELECT *
FROM store_locator
WHERE (store_status = 'Active'
AND store_address LIKE '%Q%')
OR (branch_name LIKE '%Q%')
OR (city LIKE '%Q%')
因此,如果其中任何一个条件为真,则会显示记录:
如果这不是您想要的逻辑,那么您可以调整查询以在要使用的AND / OR条件周围加上方括号()。如果您只想查看其中任何一个字段中带有Q的活动记录,则可能需要此查询:
SELECT *
FROM store_locator
WHERE store_status = 'Active'
AND (store_address LIKE '%Q%'
OR branch_name LIKE '%Q%'
OR city LIKE '%Q%')
请注意,括号将单个LIKE'%Q%'三个条件全部括起来。
答案 1 :(得分:0)
这是因为您没有将OR
条件分组,
IMO,这应该是您使用的正确查询:
SELECT *
FROM store_locator
WHERE store_status = 'Active'
AND (store_address LIKE '%Q%' OR branch_name LIKE '%Q%' OR city LIKE '%Q%');