数据库 - mysql实现查询表中不同字段重复记录的次数?
PHP中文网
PHP中文网 2017-04-17 11:12:05
[MySQL讨论组]

表user的内容

user_id user_hobby_1 user_hobby_2 user_hobby_3   
1       唱歌         看书          跳舞  
2       书法         唱歌          钢琴  
3       看书         唱歌          美食

预期得到的结果

[1]唱歌[2]看书[3]……

就是在hobby1-3三个字段中重复出现次数最多的记录按次数降序查询。

本人小白。望牛人指点。

PHP中文网
PHP中文网

认证0级讲师

全部回复(2)
高洛峰

表结构至少要符合第三范式
这个是不行的

这个表的情况,可以这样查询 (untested):

select hby, count(hby) as cnt from(
select user_id, user_hobby_1 as hby from [user]
union
select user_id, user_hobby_2 as hby from [user]
union
select user_id, user_hobby_3 as hby from [user]
) as T1
order by cnt desc
高洛峰

首先我认为你这样的表设计很有问题,应该将hobby单独做成一个表,这样进行选择就非常方便,扩展性也很完备。
但如果你一定要用这样的方法。目前看来应该需要先用行转列,然后在group by 一下

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号