mysql查询未按预期添加

时间:2013-05-24 22:03:28

标签: mysql

我有一个拥有梦幻足球队的数据库。 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.

我知道为什么或如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

我很确定这是因为Will Johnson是两个单词,因为没有+-运算符,默认为OR,所以它会搜索Will }或Johnson

要解决此问题,您应该执行('"Will Johnson"' IN BOOLEAN MODE)

https://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html