0

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

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

4

1 回答 1

3

我很确定这是因为Will Johnsonis 两个词,并且由于没有+or-运算符并且默认为OR,因此它搜索Willor Johnson

要解决此问题,您应该这样做('"Will Johnson"' IN BOOLEAN MODE)

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

于 2013-05-24T22:12:45.720 回答