1

假设我有这张桌子:

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

如果用户搜索“apple peach”我想得到这条线

2    |  apple   |  peach   |  xxxxxx  |  san francisco

搜索“applepie san francisco”或“applepeach fran”的预期结果相同

那么执行此操作的 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

试试这个查询

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

很简单,你想检查field1是“苹果”field2还是“桃子”,所以WHERE field1='apple' AND field2='peach'会这样做。

我觉得你想要的有点复杂。一种解决方案可能是将搜索词中的空格替换为逗号,然后使用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)

编辑以添加 IN 子句,因为以前它只从一个字段中选择

这是一个简单的查询,检查这个有效的SQL Fiddle 代码

于 2012-09-17T14:50:41.510 回答