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