这是查询:
SELECT title from prod_table WHERE MATCH(title) AGAINST ('-Gears Of War' IN BOOLEAN MODE) limit 30;
表格肯定是填充的,这里是架构
SQL query: explain prod_table;
Rows: 22
Field Type Null Key Default Extra
PRprodinfo_id int(11) NO PRI NULL auto_increment
PRid varchar(64) NO UNI NULL
main_category varchar(64) YES NULL
title varchar(128)NO MUL NULL
agegroup varchar(16) YES NULL
author varchar(128)YES NULL
sex varchar(8) YES NULL
actors varchar(256)YES NULL
platform varchar(64) YES NULL
artist varchar(128)YES NULL
genre varchar(128)YES NULL
description text YES NULL
manuf varchar(128)YES NULL
manufID varchar(64) YES NULL
prodcat varchar(128)YES NULL
prodcatID int(11) YES NULL
userrating decimal(1,1)NO NULL
profrating decimal(1,1)NO NULL
lowprice decimal(10,2) NO NULL
highprice decimal(10,2) NO NULL
imageURL varchar(128) NO NULL
dateadded timestamp NO CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP
也尝试过:
SELECT title from PRprodINFO WHERE MATCH(title) AGAINST ("-'Gears Of War'" IN BOOLEAN MODE) limit 30;
和
SELECT title from PRprodINFO WHERE MATCH(title) AGAINST ("'-Gears Of War'" IN BOOLEAN MODE) limit 30;
但他们有点取消自己,一些结果是:
'Gears and Gear Cutting Workshop Practice'
'Gears of War 2 Signature Series Guide Bradygames Signature Guides'
'Gears of War 2 Last Stand Edition Guide Bradygames Signature'
'Cream Disraeli Gears Classic Albums DVD RETAIL BUT NOT AVAILABLE TO RENT'
'Gears of War 2 Limited Edition'
'Gears Of War'
'Gears of War 2'
'Gears of War Triple Pack'
'Gears of War 2 Game of the Year Edition'
'Gears of War 3 Limited Edition'
'Gears of War 3'
这正是我不想要的
我很难过 - 在标题栏上还有一个FULLTEXT索引。
由于
的Darren
答案 0 :(得分:0)
不支持使用单个否定查询。阅读documentation。它声明:
注意: - 运算符仅用于排除其他行 与其他搜索字词匹配。因此,布尔模式搜索即 仅包含前面带有的术语 - 返回空结果。它不是 返回“包含任何排除条款的行以外的所有行。”
所以这是不可能的。您必须包含其他内容才能查找查询,以排除与 - 匹配的行。
我的观点仅限于此,但我认为尝试返回与某个任意术语不匹配的所有行的列表会过于密集。最好的解决方案是使用“like”查询,如下所示。
SELECT title from prod_table
WHERE NOT title LIKE '%Gears Of War%'
limit 30;
答案 1 :(得分:0)
试试这个:
SELECT title from prod_table WHERE MATCH(title) AGAINST ( "-'Gears Of War'" IN BOOLEAN MODE) limit 30;
用单引号括起来。
答案 2 :(得分:0)
使用MATCH AGAINST运算符无法解决此问题。解决方案是negate a LIKE查询。例如:
SELECT title FROM prod_table WHERE title NOT LIKE '%Gears Of War%' LIMIT 30;