Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用多列的MySQL搜索_Mysql_Sql - Fatal编程技术网

使用多列的MySQL搜索

使用多列的MySQL搜索,mysql,sql,Mysql,Sql,我有一个表,其中有一个城市和描述列,我的网页有一个搜索字符串输入 如果我输入家具生产我会得到公司名称,这很好,但是如果我想做类似家具生产伦敦字符串与城市的事情,我不会得到任何结果 如何修复此查询以使用城市列或其他列 SELECT slug, title FROM catalog WHERE city || description LIKE '%$keyword% 如评论中所述,在DB上使用这种“流体”标准执行搜索将非常昂贵 不管怎样,如果这是你想要走的路,我的尝试如下: SELECT slug

我有一个表,其中有一个城市和描述列,我的网页有一个搜索字符串输入

如果我输入
家具生产
我会得到
公司名称
,这很好,但是如果我想做类似
家具生产伦敦
字符串与城市的事情,我不会得到任何结果

如何修复此查询以使用城市列或其他列

SELECT slug, title FROM catalog WHERE city || description LIKE '%$keyword%

如评论中所述,在DB上使用这种“流体”标准执行搜索将非常昂贵

不管怎样,如果这是你想要走的路,我的尝试如下:

SELECT slug, title FROM catalog 
WHERE CONCAT(city, description) LIKE '$keyword'
OR CONCAT(description, city) LIKE '$keyword'
为了实现这一点,您可能需要将所有空格替换为
%
,并可能在代码中添加前导和尾随
%

我认为执行查询的代码是PHP,因此可以这样做:

$keyword = "%" . str_replace(" ", "%", $keyword) . "%";
正如我所说,这将对数据库造成很大的影响,特别是如果行数很重要的话。尝试优化全文搜索的列,并确保输入表单中的搜索条件不能太短


希望这有帮助

查找全文搜索。可以接受哪些搜索词?那么
伦敦家具生产
伦敦家具
呢。任何满足这些多重搜索过滤器的查询都会有很差的性能。我认为用户可以用两种方式输入,所以如果查询可以用两种方式工作就好了。它可能会重复工作!这正是我需要的。谢谢我认为数据库中不会有太多的行,大约3k,但我会考虑全文搜索。