mysql like 查询获取 max like

标签 mysql sql

我要执行查询:

 ----------------------
|name                  |
 ----------------------
|data                  |
|data get go           |
|data get to go        |
 ----------------------

Select * from table where name like '%data%' or name like '%go%' or name like'%get%';

累积。对我来说应该是:

 ----------------------
|name                  |
 ----------------------
|data get go           |
|data get to go        |
 ----------------------

但是我明白了

 ----------------------
|name                  |
 ----------------------
|data                  |
|data get go           |
|data get to go        |
 ----------------------

请帮助我获得正确的输出。

最佳答案

你的第一个 where 子句

 name like '%data%

将包含第一行。 所以改成

Select * from table where name like '%data%' AND (name like '%go%' or name like'%get%');

那应该就可以了。它将确保数据与 goget

一起出现在名称中

编辑:

跟进问题...

有点难以理解您要说的内容。但是,您是否希望返回搜索中名称中单词最多的结果?所以如果我搜索“1 2 3 4 5”,

来自
_________
|名称 |
|----------------|
|1 2 |
|1 2 3 4 5 |
|1 2 3 |
|1 2 3 4 |
--------------

您会想要最常用的前 3 名。所以:

_________
|1 2 3 4 5 |
|1 2 3 4 |
|1 2 3 |
------------------

而且它不会返回“1 2”行。这就是你要问的吗?

关于mysql like 查询获取 max like,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24714256/

相关文章:

MySql 分组并包含 null

MySQL查询获取特定日期的记录

mysql - 纠正基于mysql中另一个表的列中的拼写错误

php - 当代码移动到函数时无法连接到数据库

mysql - 将表的值放在多列中的一行mysql

mysql - 分区表中的索引

c# - 在c#中调用mysql存储过程

mysql - SQL Select Query中的Where条件算法

c# - SQL 查询正在复制行并在我的聚合函数中使用这些行

MySQL 来自多个表的最新相关记录