MYSQL GROUP BY使用FULLTEXT SEARCH不返回任何结果

时间:2018-01-15 20:45:31

标签: mysql sql group-by full-text-indexing

我有以下MYSQL架构:

CREATE TABLE IF NOT EXISTS `tag` (
   `id` SMALLINT UNSIGNED NOT NULL,
   `tag` VARCHAR(15) NOT NULL,
   FULLTEXT INDEX(`tag`),
   PRIMARY KEY (`id`,`tag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `tag`(`id`,`tag`) VALUES
('1','motor'),
('2','motor');

我想从tag列中选择按tag列分组的行。我运行了以下命令:

SELECT COUNT(id),tag FROM tag
GROUP BY tag

预期结果:

COUNT(id) | tag
------------------
    2     | motor

实际结果: no rows returned

如果从表中删除FullText索引,结果将按预期返回。将fulltextgroup

一起使用时,我不知道出了什么问题

更新通过进一步研究,问题似乎来自复合主键。如果我切换到单列主键,查询再次起作用,但我需要为此表使用复合键,因为同一个id可能有多个标记。

我为你创建了一个SQL小提琴: http://sqlfiddle.com/#!9/1f765d/1/0

1 个答案:

答案 0 :(得分:0)

终于发现了这个问题。该引擎在执行查询时有2个索引可供选择,最终根本不使用任何索引,并且不返回任何结果。

这很可能是一个错误。这是FORCE INDEX作为解决方法派上用场的一种情况。

所以最后的工作命令:

SELECT COUNT(id),tag FROM tag
FORCE INDEX(PRIMARY)
GROUP BY tag

这是更新代码的小提琴: http://sqlfiddle.com/#!9/a8568/21/0

谢谢大家!