我需要找到具有最大类别的记录[重复]
Posted
技术标签:
【中文标题】我需要找到具有最大类别的记录[重复]【英文标题】:i need to find records which have max categories [duplicate] 【发布时间】:2021-05-19 12:45:15 【问题描述】:id | category |
---|---|
1 | eat,drink |
2 | drink,cup |
3 | eat,take |
4 | tea,eat |
我需要订购类别列重复的最大类别数量的记录,ex-eat重复3次,然后是第一个订单,然后是饮料,然后是茶或杯子。 提前谢谢..
【问题讨论】:
你应该修复你的数据模型。在分隔字符串中存储多个值不是 SQL 存储数据的方式。 当你像这样存储逗号分隔的列表时,你会发现many queries become hard to solve。如果您将类别存储为单独的表格,每个类别一行,它们会更容易。 感谢@GordonLinoff,但我们无法在项目中期更改流程,您有上述流程的解决方案吗? 【参考方案1】:正如 Gordon 建议的那样,应更改数据模型以充分利用 RDBMS。但是您正在寻找的可以通过以下查询来实现:
select category,count(*) category_count from(
select t.id, j.category
from tablename t
join json_table(
replace(json_array(t.category ), ',', '","'),
'$[*]' columns (category varchar(50) path '$')
) j
)t
group by category
order by count(*) desc;
输出:
【讨论】:
以上是关于我需要找到具有最大类别的记录[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 EF Core Code-First 创建具有子类别的类别表? [复制]
mysql - 为每组分组的 SQL 结果获取具有最大值的记录[重复]