[英]MYSQL GROUP BY returns no results with FULLTEXT SEARCH
我有以下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
从表中的索引,返回的结果如预期。 我不知道将fulltext
与group
使用时出了什么问题
更新随着进一步的研究,问题似乎出在复合主键上。 如果我切换到单列主键,查询将再次起作用,但是我需要为此表使用复合键,因为相同的ID可能具有多个标签。
我创建了一个SQL提琴供您尝试: http : //sqlfiddle.com/#!9/1f765d/1/0
终于发现了问题。 引擎在执行查询时有2个索引可供选择,最终将完全不使用任何索引,并且不返回任何结果。
这很可能是一个错误。 在这种情况下, FORCE INDEX
可以派上用场。
所以最后的工作命令是:
SELECT COUNT(id),tag FROM tag
FORCE INDEX(PRIMARY)
GROUP BY tag
这是一个带有更新代码的小提琴: http : //sqlfiddle.com/#!9/a8568/21/0
感谢大家!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.