MySQL:按多列分组不能提供准确的结果

时间:2017-12-15 06:55:17

标签: mysql database group-by

我有一个包含5列的表:

  

before_1,before_2,before_3,rule,name

其中before_1,before_2和before_3是文档中名称/单词之前的三个单词。

我想找到的是:

  

在名称之前一起出现的两个单词。我不想只是顶部的单词,而是所有单词都按出现次数排序。

我尝试了以下几个查询,但这对我不起作用。

select count(before_2),count(before_3),name from data_with_before_words group by name;

我对两个列都有相同的计数,这不是我所期望的。

示例数据:

前5行:

before_1,before_2,before_2,rule,name

a,league,of,Persona,Amell
the,assasin,of,Persona,Amell
the,league,of,Persona,Amell
a,assasin,of,Persona,Amell
a,league,of,Persona,Amell

预期产出:

league,of,3,Amell
assasin,of,2,Amell

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:1)

尝试此查询:

select count(res1.comWords) as occurrences, res1.name from (select concat(before_1,"-", before_2) as comWords, name from data_with_before_words) res1 group by res1.name order by occurrences desc;

答案 1 :(得分:1)

要获得预期的输出,您可以使用以下查询

select before_2,before_3,name,count(*)
from data_with_before_words 
group by before_2,before_3,name
order by count(*) desc

Demo

答案 2 :(得分:0)

试试这个

SELECT before_2,before_3,name FROM data_with_before_words GROUP BY before_2,before_3,name Having count(*)>=1