【发布时间】:2011-08-04 19:53:13
【问题描述】:
我正在尝试按一行中的匹配总数来排序 MySQL 选择语句。例如,如果表格看起来像 ...
id | dessert | choice
---------------------
1 | pie | apple pie, chocolate pie
2 | cake | chocolate cake, lemon cake, white chocolate cake, triple chocolate cake
3 | donut | frosted donut, chocolate donut, chocolate cream donut
...如果有人搜索chocolate,结果应该是有序的:
dessert | matches
-----------------
cake | 3
donut | 2
pie | 1
但是,我正在努力使查询像这样排序。我在这里查看了其他示例,但它们似乎过于复杂,因为我猜这将是一件相当简单的事情。
有没有一种简单的方法来实现这一点?我是 MySQL 新手,所以如果这是一个明显的问题,我很抱歉。
提前感谢您的想法!
附:我无法在此表上使用fulltext,因此我无法按相关性对结果进行排序。
【问题讨论】:
-
表是
MyISAM还是InnoDB?在MyISAM表中,即使不创建FULLTEXT索引,您也可以使用一些FULLTEXT功能。 -
您可以更换桌子吗?在您的选择字段中使用逗号分隔的列表,您违反了规范化规则...如果您可以更改它,awm 的表结构应该是您所使用的......
-
谢谢大家。 Quassnoi,它是 MyISAM。如果没有
FULLTEXT索引,我不知道某些功能仍然可用,因此感谢您的提示。 Leslie,是的,我最终采用了这个解决方案。原始数据是 CSV 格式的,所以我认为一张表就可以了。我错了:)
标签: mysql sql select sql-order-by