2013-04-10 69 views
0

我想这个查询:Mysql的比赛,对没有返回正确的结果

SELECT * FROM `table_name` WHERE MATCH(`field_name`) 
AGAINST('+san +city' IN BOOLEAN MODE) 

我想应该包含SAN城市的所有记录,但结果是不同的。结果得到所有包含“珠江城,盐湖城等”的“城市”记录。 我做错了什么。

+0

那么它是一个全文检索,这就是为什么它显示了所有城市的结果。如果只想搜索“圣城”结果,为什么不使用like子句? – Neo 2013-04-10 06:45:33

回答

2

尝试在SELECT -part查询的加入比赛获得关于MySQL如何在这里工作一握:

SELECT *, MATCH(field_name) AGAINST('+san +city' IN BOOLEAN MODE) 
FROM table_name 
WHERE MATCH(field_name) AGAINST('+san +city' IN BOOLEAN MODE) 

你会看到在此列的优先级。

请记住,你的结果,如果你正在使用MyISAM和MySQL的< 5.6或InnoDB和MySQL的=> 5.6不同。关于它的Here's a good article

+0

好吧,我使用此查询,而不是比赛,对查询:SELECT 从FIELD_NAME table_name的WHERE(FIELD_NAME LIKE '%城市%' AND FIELD_NAME LIKE '%太阳%'); ,我让我的欲望导致 – Farhan 2013-04-10 07:24:42

+0

你可以做到这一点,但是这不是全文搜索即可。无论什么最适合您的需求! – Bjoern 2013-04-10 08:12:20

+0

是不是全文搜索,无论如何感谢您的善意帮助 – Farhan 2013-04-10 08:13:59

相关问题