MySQL:Select 第 1 列或第 2 列中出现次数最多的 3 个字符串

MySQL: Select 3 most occuring strings either in column 1 or column 2

我想从我的数据库的 2 行中获取 3 个最常出现的字符串。问题是字符串可能出现在 column1 或 column2 中。我只想使用一个查询。提前致谢

示例数据库:

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

输出应该是:

string count  
foo    3  
bar    2  
api    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 是您的 table 姓名。

使用此查询:

  • 您采用所有字符串的并集,string1string2
  • 您将这些字符串按数量分组。
  • 您按数量从大到小排序。
  • 你只拿了三个第一。