按大多数平等文本排序

时间:2016-01-26 14:01:27

标签: mysql sql-order-by

我有一张桌子,我需要根据一个单词最常出现的情况对行进行排序,是的。更多的是,它将是最高点的一条线,并将行数限制为五。

------------------------------------------------------------------------
id | logo       |  feature1    |   feature2     |   feature3    | feature4
------------------------------------------------------------------------
1  | img1.png   |   yes    |   yes          |   yes          |   info
------------------------------------------------------------------------
2  | img2.png   |   no     |   no           |   no          |   yes
------------------------------------------------------------------------
3  | img3.png   |   yes    |   info          |   yes         |   info
------------------------------------------------------------------------
4  | img4.png   |   yes    |   yes          |   info        |   yes

ID为1或4的第一行 ID为1或4的第二行 ID为3的第三行 ID为2的第四行

2 个答案:

答案 0 :(得分:1)

这样的东西可以给你你想要的东西:

select id, logo, feature1, feature2, feature3, feature4
from your_table
order by ((feature1='yes') + (feature2='yes') + (feature3='yes') + (feature4='yes')) desc
limit 5

答案 1 :(得分:0)

在所有要素列上放置一个FULLTEXT索引并执行简单的布尔搜索

ALTER TABLE t ADD FULLTEXT idx_name (feature1, feature2, feature3,feature4);

 SELECT * FROM T WHERE MATCH (feature1, feature2, feature3,feature4) AGAINST ('word');

注意stop word list and minimum word length