我想执行查询:
----------------------
|name |
----------------------
|data |
|data get go |
|data get to go |
----------------------
Select * from table where name like '%data%' or name like '%go%' or name like'%get%';
度Acc。对我来说应该是我:
----------------------
|name |
----------------------
|data get go |
|data get to go |
----------------------
但是我得到了
----------------------
|name |
----------------------
|data |
|data get go |
|data get to go |
----------------------
请帮助我获得正确的输出。
答案 0 :(得分:0)
你的第一个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 |
----------------
你想要最常用的前三名。所以:
<强> _________ 强>
| 1 2 3 4 5 |
| 1 2 3 4 |
| 1 2 3 |
-----------------
它不会返回'1 2'行。这就是你问的问题吗?
答案 1 :(得分:0)
要获得上述结果,您可以使用此查询
SELECT * FROM `table` WHERE name like 'data%get%go'
这将输出此格式的结果
data dummy get dummy go