我正在创建一个搜索某些图片的搜索功能。每张图片都有一个状态,表示是否被批准或拒绝。 mysql在返回之前会检查状态,但它仍会返回不应返回的图像。
这是我的问题:
SELECT * FROM Pictures
WHERE ImageTitle LIKE '%yaa%'
OR ImageDescription LIKE '%yaa%'
AND Approval='Approved'
Order BY DateTime DESC
“yaa”是现在的搜索。这只是一个例子。 查询返回标记为已批准的结果,但也返回标记为已拒绝的结果。我的查询出了什么问题?
我已经尝试将AND语句移动到查询的开头,返回相同的内容。
答案 0 :(得分:6)
将您的OR
条件与括号分组。
SELECT *
FROM Pictures
WHERE (ImageTitle LIKE '%yaa%'
OR ImageDescription LIKE '%yaa%')
AND Approval='Approved'
Order BY DateTime DESC
答案 1 :(得分:1)
/*There should be a parenthesis for 'or' condition, and the state condition should remain outside of the parenthesis*/
SELECT * FROM Pictures
WHERE (ImageTitle LIKE '%yaa%'
OR ImageDescription LIKE '%yaa%')
AND Approval='Approved'
Order BY DateTime DESC