假设我有这张表:
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请求会做什么?
感谢
答案 0 :(得分:4)
SELECT
*
FROM
your_table
WHERE
'apple' IN (field1, field2, field3)
AND 'peach' IN (field1, field2, field3)
答案 1 :(得分:1)
很简单,您想检查field1
是否为“apple”而field2
是“桃子”,因此WHERE field1='apple' AND field2='peach'
会这样做。
我觉得你想要的东西虽然有点复杂。一种解决方案可能是用逗号替换搜索词中的空格,然后使用IN
SQL运算符在其中进行搜索。
因此以下内容可能有效:
SELECT ... FROM ...
WHERE
field1 IN ('apple','peach') OR
field2 IN ('apple','peach') OR
field3 IN ('apple','peach') OR
field4 IN ('apple','peach')
答案 2 :(得分: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 code 。
答案 3 :(得分:1)
尝试此查询
SELECT * FROM TABLE_NAME WHERE CONCAT(field1, ' ', field2) = 'apple peach';