加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

php – mysql多列搜索

发布时间:2020-12-11 23:50:21 所属栏目:MySql教程 来源:网络整理
导读:我有这样一张桌子: +-------------------+---------------+| description | colour |+-------------------+---------------+| Macrame Dress | Washed Black || Darcelle Gilet | Dirty Shellac || Darcelle Cardigan | Washed Black || Let It Rot Vest |

我有这样一张桌子:

+-------------------+---------------+
| description       | colour        |
+-------------------+---------------+
| Macrame Dress     | Washed Black  |
| Darcelle Gilet    | Dirty Shellac |
| Darcelle Cardigan | Washed Black  |
| Let It Rot Vest   | Optic White   |
| Let It Rot Crew   | Washed Black  |
| Let It Rot Crew   | Optic White   |
| Battalion Short   | Somme         |
| Seine Dress       | Washed Black  |
| Seine Dress       | Cocomotion    |
| Odette V-neck     | Linen Marl    |
+-------------------+---------------+

?我想搜索它为“黑色礼服”,它只返回第1行和第1行. 8.如果我输入“黑色”,它将返回第1,3,5和1行. 8.连衣裙应该返回第1,8和8行. 9.

任何人都可以想到一个非常优雅,漂亮的sql,它将采用任意数量的搜索词并返回最简洁的结果集.我可以想到一些非常丑陋的方法来做这件事,但是他们打乱了我的业力.

最佳答案 我能想到的唯一不错的解决方案(业力方面)将涉及使用FULLTEXT索引.这将允许您使用这样的查询:

SELECT * FROM mytable
WHERE MATCH (description,color) AGAINST ('black dress');

不幸的是,如果我没记错的话,FULLTEXT索引需要MyISAM表类型.

编辑

我怀疑这是你正在寻找的,但让我为了讨论添加它.您可以将数据复制到临时MyISAM表中,然后对其进行全文搜索:

CREATE TEMPORARY TABLE mytmptable ENGINE=MyIsam SELECT * FROM mytable;
ALTER TABLE mytmptable ADD FULLTEXT KEY (description,color); 
SELECT * FROM mytmptable WHERE MATCH (description,color) AGAINST ('black dress');

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读