求一个sql,搜索比某条记录数少的第一条记录。

BILLSSJONE 2011-03-20 10:37:42
一个用户记录表,有重复的记录,搜索比某条记录数少的第一条记录。
比如下面,user1有3条记录,搜索比user1记录数少的一个用户,有user3和user2,但只取最多的一条记录,就是只取user3,请问sql怎么写?谢谢!!

CREATE TABLE `user` (
`iUKey` int(8) NOT NULL auto_increment,
`cUserName` varchar(30) NOT NULL default '',
PRIMARY KEY (`iUKey`)
) ENGINE=MyISAM;
INSERT INTO `user` VALUES (1, 'user1');
INSERT INTO `user` VALUES (2, 'user1');
INSERT INTO `user` VALUES (3, 'user1');
INSERT INTO `user` VALUES (4, 'user3');
INSERT INTO `user` VALUES (5, 'user3');
INSERT INTO `user` VALUES (6, 'user6');
INSERT INTO `user` VALUES (7, 'user6');
INSERT INTO `user` VALUES (8, 'user6');
INSERT INTO `user` VALUES (9, 'user6');
INSERT INTO `user` VALUES (10, 'user2');

结果:user3
...全文
82 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
WWWWA 2011-03-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sjzzy 的回复:]
如果 ‘user1’的记录再加多一条
SQL code
insert into user values(6,'user1');

楼上的查询就是Empty set了
这条更通用:
SQL code
select cusername
from user
group by cusername
having count(*) <
(select count(*)
……
[/Quote]
1、insert into user values(6,'user1');
`iUKey`是主键,无法插入;
2、去掉6
insert into user values(null,'user1');
在楼主的测试数据中,没有COUNT(*)=3的记录,故为空集
sjzzy 2011-03-21
  • 打赏
  • 举报
回复
如果 ‘user1’的记录再加多一条
insert into user values(6,'user1');

楼上的查询就是Empty set了
这条更通用:
select cusername 
from user
group by cusername
having count(*) <
(select count(*)
from user
where cusername='user1'
)
order by count(*) desc
limit 1;

WWWWA 2011-03-21
  • 打赏
  • 举报
回复
自己解决更好

SELECT a1.* FROM (
SELECT a.cUserName,COUNT(*) AS ma FROM `user` a GROUP BY a.cUserName ) a1
INNER JOIN
(SELECT a.cUserName,COUNT(*) AS mb FROM `user` a WHERE a.cUserName='user1' GROUP BY a.cUserName ) a2
ON a1.ma=a2.mb-1

or

sELECT a.cUserName,COUNT(*) FROM `user` a GROUP BY a.cUserName
HAVING COUNT(*)=(SELECT COUNT(*)-1 FROM `user` a WHERE a.cUserName='user1' GROUP BY a.cUserName )




ACMAIN_CHM 2011-03-21
  • 打赏
  • 举报
回复
mysql> select * from user;
+-------+-----------+
| iUKey | cUserName |
+-------+-----------+
| 1 | user1 |
| 2 | user1 |
| 3 | user1 |
| 4 | user3 |
| 5 | user3 |
| 6 | user6 |
| 7 | user6 |
| 8 | user6 |
| 9 | user6 |
| 10 | user2 |
+-------+-----------+
10 rows in set (0.09 sec)

mysql> select cUserName
-> from user
-> group by cUserName
-> having count(*)=(select count(*)-1 from user where cUserName='user1')
-> limit 1;
+-----------+
| cUserName |
+-----------+
| user3 |
+-----------+
1 row in set (0.00 sec)

mysql>
BILLSSJONE 2011-03-20
  • 打赏
  • 举报
回复
我想出来了,谢谢
select distinct A.user from user A where (select count(iUKey) as getcount from user where user=A.user)<=3 order by (select count(iUKey) as getcount from user where user=A.user) desc limit 1
内容概要:本文档名为《【单级PFC变压器设计表格】开关电源单级PFC变压器设计》,但实际内容并未聚焦于此主题,而是混杂了大量关于科研仿真资源的推广信息。文档主要列举了一系列基于Matlab和Python的科研仿真项目,涵盖智能优化算法、机器学习与深度学习、图像处理、路径规划、无人机应用、通信技术、信号处理、电力系统、元胞自动机、雷达技术和车间调度等多个领域。文档强调了该团队的专业性,提供广泛的MATLAB仿真辅导服务,并多次提及资源下载方式,包括公众号“荔枝科研社”和百度网盘链接。文档还穿插了一些关于科研方法的哲理性思考,鼓励科研人员在努力的同时善于借助外力,并保持创新思维。 适合人群:具备一定编程基础,尤其是熟悉Matlab/Simulink和Python,且对电力电子、控制理论、优化算法、机器学习、无人机等领域有研究兴趣的研究生、科研人员和工程师。 使用场景及目标:①为科研工作者提供丰富的仿真案例和技术支持,帮助他们快速实现复杂的算法模型,如多智能体编队、经济调度、神经网络预测等;②作为教学辅助工具,用于指导学生完成课程设计或毕业课题;③为工程技术人员提供解决实际问题的算法参考和代码模板。 阅读建议:此资源本质上是一个科研服务与代码资源的宣传目录,而非系统性的技术教程。使用者应首先明确自身需,然后根据文档中列出的主题寻找对应的技术服务或代码资源。由于内容庞杂,建议重点关注与自己研究方向相关的部分,并通过提供的联系方式(公众号)获取完整资源。

57,063

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧