【问题标题】:MySQL: Select 3 most occuring strings either in column 1 or column 2MySQL:在第 1 列或第 2 列中选择 3 个最常出现的字符串
【发布时间】:2015-03-24 17:52:06
【问题描述】:

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

示例数据库:

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

输出应该是:

string count  
foo    3  
bar    2  
api    1

【问题讨论】:

  • 但这就是所有字符串!
  • 我的数据库要大得多,最大的数应该超过 50 - 而且有超过 3 个字符串 ;)

标签: mysql select count


【解决方案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
  • 您可以按数量对这些字符串进行分组。
  • 您按从大到小排序。
  • 你只拿了三个第一。

【讨论】:

  • 这给了我来自数据库的三个随机字符串,计数为 1...& 好奇,“子”是什么?
  • sub 是我们给子查询起的名字
  • 谢谢 Gordon 和 JuniorCompressor - UNION ALL 是必要的 ;) - 祝你好运
猜你喜欢
  • 2016-11-19
  • 2016-06-16
  • 2018-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-30
  • 2015-11-24
相关资源
最近更新 更多