0

いくつかの写真を検索する検索機能を作成しています。各写真には状態があり、承認されたか拒否されたかを示します。mysql は返す前に状態をチェックしますが、返されるべきではない画像を返します。

これが私のクエリです:

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

「やあ」は今の検索です。これはほんの一例です。クエリは、承認済みとしてマークされた結果を返しますが、拒否済みとしてマークされた結果も返します。クエリの何が問題になっていますか?

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 に答える