Mysql 将多个字段转换为一个短语并在其上使用LIKE?

Mysql 将多个字段转换为一个短语并在其上使用LIKE?,mysql,Mysql,我有一个很棘手的问题 我有一个包含多个字段的表。现在,我的查询中的WHERE子句如下所示: a.body like '%$v%' or a.model like '%$v%' or a.other like '%$v%' or s.name like '%$v%' or w.name like '%$v%' or b.name like '%$v%' or p.name like '%$v%' or c.name like '%$v%' or o.name like '%$v%' or cat

我有一个很棘手的问题

我有一个包含多个字段的表。现在,我的查询中的WHERE子句如下所示:

a.body like '%$v%' 
or a.model like '%$v%'
or a.other like '%$v%'
or s.name like '%$v%'
or w.name like '%$v%'
or b.name like '%$v%'
or p.name like '%$v%'
or c.name like '%$v%'
or o.name like '%$v%'
or cat.name like '%$v%'
所有这些字段都是
VARCHAR(255)
,而
$v
将是搜索词

我想接受这个查询并执行更准确的搜索。现在它正在产生不想要的结果

我只是想知道,我可以把所有这些字段变成一个大字符串搜索,还是应该为所有字段添加全文索引,并对所有字段进行匹配

非常感谢您的帮助。

您试过这个吗

WHERE CONCAT(a.body,a.model,a.other,s.name,w.name,b.name,p.name,c.name,o.name,cat.name) LIKE "%$v%"

你可以先执行一个UNPIVOT,然后执行类似的操作。你说的更精确的搜索是什么意思?你能详细说明一下吗?你展示了产生不准确结果的代码,但你确实告诉了一件事,精确的结果应该如何满足你的需要。好吧,这是不确定的,假设有人搜索“锐步滑板”,锐步是a.model,滑板是p.name。好吧,它与所有锐步或所有溜冰鞋现在的方式相匹配……定义不期望的结果。