1

私がこのテーブルを持っているとしましょう:

id    |  field1  |  field2  |  field3  |  field4
 0    |  pear    |  peach   |  fruit   |  california
 1    |  apple   |  peas    |  xxxxxx  |  cupertino
 2    |  apple   |  peach   |  xxxxxx  |  san francisco

ユーザーが「アップルピーチ」を検索した場合、私は行を取得したい

2    |  apple   |  peach   |  xxxxxx  |  san francisco

「applepiesanfrancisco」または「applepeachfran」の検索でも同じ結果が期待されます

では、それを行うためのmysqlリクエストは何でしょうか?

ありがとう

4

4 に答える 4

4
SELECT 
   * 
FROM 
   your_table
WHERE 
   'apple' IN (field1, field2, field3) 
   AND 'peach' IN (field1, field2, field3)
于 2012-09-17T14:49:57.657 に答える
1

field1簡単に言うと、 「リンゴ」とfield2「桃」のどちらであるかを確認したいので、そうWHERE field1='apple' AND field2='peach'します。

でも、あなたが欲しいものはもう少し複雑だと思います。1つの解決策は、検索語のスペースをコンマに置き換えてから、INSQL演算子を使用してその中を検索することです。

したがって、次のようなものが機能する可能性があります。

SELECT ... FROM ... 
WHERE 
field1 IN ('apple','peach') OR 
field2 IN ('apple','peach') OR 
field3 IN ('apple','peach') OR  
field4 IN ('apple','peach')
于 2012-09-17T14:50:05.013 に答える
1

検索に合わせて、ある種のパラメータを使用します。それで:

SELECT `id`, `field1`, `field2`, `field3`, `field4`
  FROM Table1
 WHERE whatyouarelookingfor_1 IN (field1, field2, field3) 
   AND whatyouarelookingfor_2 IN (field1, field2, field3)

以前は1つのフィールドからのみ選択していたため、IN句を追加するように編集されました

これは簡単なクエリです。この動作するSQLFiddleコードを確認してください。

于 2012-09-17T14:50:41.510 に答える
1

このクエリを試してください

SELECT * FROM TABLE_NAME WHERE CONCAT(field1, ' ', field2) = 'apple peach';
于 2012-09-17T14:52:48.717 に答える