0

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

这是我的查询:

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

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

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

4

2 回答 2

7

OR用括号将您的条件分组。

SELECT * 
FROM Pictures
WHERE (ImageTitle LIKE '%yaa%'
       OR ImageDescription LIKE '%yaa%')
       AND Approval='Approved'
Order BY DateTime DESC
于 2013-05-05T11:39:26.277 回答
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
于 2013-05-05T11:43:39.110 回答