一些背景
我的目标是获取在表(实体)返回的一组行中最常出现的“标签”。在我的案例中,一个实体是一群名人及其角色。我没有灵活性来更改数据库架构。

例如(快速SQL表结构)

ENTITYNAME (varchar)
TAG1 (varchar)
TAG2 (varchar)
TAG3 (varchar)
TAG4 (varchar)
TAG5 (varchar)


返回的示例行:

ENTITYNAME      TAG1            TAG2            TAG3                TAG4            TAG5
Warren Buffett  CEO             Investor        Philathropist       Billionaire
Bill gates      Billionaire     Visionary       CEO                 Visionary
Steve Jobs      Visionary       CEO
Oprah           Celebrity       Entertainment


我想做什么?
获取在返回的SQL行中最常见的TAG。对于上面的示例,我期望获得“ CEO”(因为4条记录出现了3次)。
假设,一个SQL查询返回如上所述的n行,我如何找到最常出现的标签列表?

请帮助,我不确定如何最好地解决此问题。我没有灵活性来更改数据库架构。

最佳答案

你可以这样做:
进行如下5个联合:

SELECT Tag1 as Tag FROM Table
UNION ALL
SELECT Tag2 as Tag FROM Table
UNION ALL
SELECT Tag3 as Tag FROM Table
UNION ALL
SELECT Tag4 as Tag FROM Table
UNION ALL
SELECT Tag5 as Tag FROM Table


并用它创建一个视图。然后:

SELECT Tag, COUNT(Tag) FROM myView GROUP BY Tag ORDER BY COUNT(Tag) DESC


第一行是最常见的标签
希望是您想要的。

关于mysql - MySQL-如何在行列表中查找最常见的“标签”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29175522/

10-11 01:37