0

親愛なる友人 私は記事を保存するテーブル (code_bit_table) を持っています。各記事には SUBJECT があり、各記事には TITLE と TAGS があります。タイトルまたは TAGS フィールドの任意の文字に基づいてテーブルを検索したいのですが、単一の件名に含まれています。たとえば、PHP のみを検索したいのですが、PHP では、TITLE または TAGS フィールドにテキスト (配列など) が含まれているかどうかを確認したいと考えています。

問題は、私のクエリが他の件名も返すことです。それは非常に単純な問題かもしれませんが、私を大いに困惑させました

 SELECT * FROM code_bit_table WHERE `subject` = 'PHP'  AND `tags` LIKE 
   '%text%' OR `title` LIKE '%text%'

クエリは正常に機能しますが、同じテーブルに存在する jQuery などの他のサブジェクトを返す理由。

4

4 に答える 4

1

かっこはあなたの友達です。

SELECT *
FROM code_bit_table
WHERE `subject` = 'PHP'
    AND (`tags` LIKE '%text%'
          OR `title` LIKE '%text%'
    )
于 2012-08-01T10:58:58.820 に答える
1
     SELECT * FROM code_bit_table WHERE `subject` = 'PHP'  AND (`tags` LIKE 
   '%text%' OR `title` LIKE '%text%')
于 2012-08-01T10:59:06.583 に答える
1

演算子ORの優先順位を次のようにオーバーライドするには、部分に開き中括弧'('&')'を付ける必要があります。AND

SELECT * 
FROM code_bit_table 
WHERE `subject` = 'PHP'  AND 
      (`tags` LIKE '%text%' OR `title` LIKE '%text%');
于 2012-08-01T10:59:36.120 に答える
1

と をグループ化する必要がtagsありtitleます。

SELECT * 
  FROM code_bit_table 
 WHERE `subject` = 'PHP'  AND 
       (`tags` LIKE '%text%' OR 
        `title` LIKE '%text%');
于 2012-08-01T11:23:46.010 に答える