我有一个拥有梦幻足球队的数据库。 p1 =球队中的球员1,p2 =球员2,依此类推,共有15名球员。任何球员的名字都可以在任何p1-p15中,具体取决于他们组建球队的方式。
我正在尝试报道谁拥有什么。以下是我用来查找有多少人在其团队中Will Johnson
的内容。
SELECT * FROM `players`
WHERE MATCH (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15)
AGAINST ('Will Johnson' IN BOOLEAN MODE)
AND rank <= 100
此返回51 。
然后我执行此代码以了解他们的前11个(前11个变量)中有多少人。
SELECT * FROM `players`
WHERE MATCH (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11)
AGAINST ('Will Johnson' IN BOOLEAN MODE)
AND rank <= 100
此返回47 。
然后我执行此代码以了解有多少人将他放在替补席上(最后4个变量)
SELECT * FROM `players`
WHERE MATCH (p12, p13, p14, p15)
AGAINST ('Will Johnson' IN BOOLEAN MODE)
AND rank <= 100
返回6 。
所以...我的问题是47 + 6 = 53,当它应该总共51.
我知道为什么或如何解决这个问题?
答案 0 :(得分:3)
我很确定这是因为Will Johnson
是两个单词,因为没有+
或-
运算符,默认为OR
,所以它会搜索Will
}或Johnson
。
要解决此问题,您应该执行('"Will Johnson"' IN BOOLEAN MODE)
https://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html