我要执行查询:
----------------------
|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%');
那应该就可以了。它将确保数据与 go
或 get
编辑:
跟进问题...
有点难以理解您要说的内容。但是,您是否希望返回搜索中名称中单词最多的结果?所以如果我搜索“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/