MySQL:在第1列或第2列中选择3个最常出现的字符串

时间:2015-03-24 17:52:06

标签: mysql select count

我想拥有来自我的数据库的2行的3个最常出现的字符串。事情是字符串可能出现在column1或column2中。我只想使用一个查询。提前致谢

示例DB:

id string1 string2  
1  foo     bar  
2  bar     foo  
3  api     foo  

输出应为:

string count  
foo    3  
bar    2  
api    1

1 个答案:

答案 0 :(得分:1)

您可以执行以下查询:

SELECT string, COUNT(*) FROM
(
    SELECT string1 string FROM mytable
    UNION ALL
    SELECT string2 string FROM mytable
) sub
GROUP BY string
ORDER BY COUNT(*) DESC
LIMIT 3

其中mytable是您的表名。

使用此查询:

  • 您接受所有字符串的并集,string1string2
  • 您按照计数对这些字符串进行分组。
  • 你按最大数量将它们排序到最低点。
  • 你只有三个第一。