MySQL一起使用LIKE,AND,OR

时间:2013-05-05 11:38:17

标签: mysql

我正在创建一个搜索某些图片的搜索功能。每张图片都有一个状态,表示是否被批准或拒绝。 mysql在返回之前会检查状态,但它仍会返回不应返回的图像。

这是我的问题:

SELECT * FROM Pictures
WHERE ImageTitle LIKE '%yaa%'
OR ImageDescription LIKE '%yaa%'
AND Approval='Approved'
Order BY DateTime DESC

“yaa”是现在的搜索。这只是一个例子。 查询返回标记为已批准的结果,但也返回标记为已拒绝的结果。我的查询出了什么问题?

我已经尝试将AND语句移动到查询的开头,返回相同的内容。

2 个答案:

答案 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