的 的 **编辑* *
好吧所以我找到了problam,这是搜索的最小字长是4,我把它改为3但是现在它只找到第1行数据而不是第2行数据...
-----原创问题:----
我的phpmyadmin上有一个MyISAM表,如下所示:
table name: `users`
coulmn name: `name`
row 1 data: 'dan'
row 2 data: 'dan252'
(这只是它的重要部分)
现在名称是全文索引字段,即时通讯使用此查询:
SELECT * FROM `users` WHERE MATCH(`name`) AGAINST('dan')
但phpmyadmin返回:
MySQL returned an empty result set (i.e. zero rows). ( Query took 0.0004 sec )
为什么它找不到任何东西?
*的 修改 *
好吧所以我找到了problam,这是搜索的最小字长是4,我把它改为3但是现在它只找到第1行数据而不是第2行数据...
答案 0 :(得分:1)
MATCH
仅适用于FULLTEXT
指示的列。并且FULLTEXT
指示仅适用于MyISAM表。
其次,'dan'可能MATCH
上使用too short。
第三,如果您的搜索字词与行的50%以上匹配,则该字词过于常见且搜索失败。
阅读here。
答案 1 :(得分:0)
试试这个。
SELECT * FROM users WHERE MATCH(name)AGAINST('dan');
我猜你在tablename和MATCH中使用了撇号。这是错的。尝试一下,让我知道这是否有效。
答案 2 :(得分:0)
我猜你试图用'dan'来回归所有人 你可以试试LIKE命令。
SELECT * FROM users WHERE name LIKE '%dan%'
那将返回'dan'和'dan252'和(如果他在表中)'123dan456'。
您也可以尝试
SELECT * FROM users Match(name) AGAINST('+dan*')
这应该返回相同的东西,可能更有效率。 如果您只是尝试使用'dan',那么请使用@Kirishna说。
SELECT * FROM users WHERE MATCH (name) AGAINST ('dan')