ITPub 上的一道题,学习下思路
来源:互联网 发布:sqlserver数据库安装 编辑:程序博客网 时间:2024/06/01 09:42
有意思的,从别处看来的即可为己用--拿来主义
数据库:MS SQL 2000:
drop table mytestgo
create table mytest
(
sn int,
code varchar(8),
ins_no varchar(6),
)
go
insert mytest values(1, '01', 'A')
insert mytest values(1, '01', 'B')
insert mytest values(2, '02', 'A')
insert mytest values(2, '02', 'D')
insert mytest values(3, '01', 'A')
insert mytest values(3, '01', 'B')
insert mytest values(4, '03', 'A')
insert mytest values(4, '03', 'B')
insert mytest values(4, '03', 'C')
insert mytest values(5, '03', 'B')
insert mytest values(5, '03', 'C')
insert mytest values(6, '02', 'A')
insert mytest values(6, '02', 'C')
insert mytest values(6, '02', 'D')
go
select * from mytest
go
sn code ins_no
--- -------- ------
1 01 A
1 01 B
2 02 A
2 02 D
4 03 A
4 03 B
4 03 C
5 03 B
5 03 C
6 02 A
6 02 C
6 02 D
需求: 依据题意,应该是对于不同的 sn 若 code,ins_no 这两列 的值是 (完全)相等的,那么就只显示一个 sn,code,ins_no, 如: sn=1 跟 sn=3 的情况。
(字段SN是用来分组的。如果不同SN下的记录完全一样(除了SN本身),包括记录条数、字段内容,则我希望只保留一个分组,例子中分组1和3满足这种情况,所以把分组3剔除掉。
但分组2和分组6由于记录条数不等,所以仍然保留。)
思路即为:
新增一个 字段 count_num 用来做是否完全匹配的判断
看到一位 大虾写的:
select min(a.sn) as sn,a.code,a.ins_no
from mytest a inner join (select sn,count(1) as count_num from mytest b group by sn) b
on a.sn=b.sn
group by a.code,a.ins_no,b.count_num
order by sn
另一位大虾写的(不明觉厉)
使用相关子查询:
select * from mytest where
sn = (
select distinct sn from sn t1 -->这里开始分组比较
where not exists(
select distinct sn from mytest t2 -->取另一组
where t2.sn<t1.sn -->相同时取最小编号
and
exists( -->组比较
select code, ins_no from mytest t3
where sn=t1.sn
minus
select code, ins_no from mytest t4
where sn=t2.sn)))
有空再深入研究。
- ITPub 上的一道题,学习下思路
- 一道腾讯笔试题的思路
- 一道关于拆分思路的算法题
- 一道算法题,看看大家的思路
- codility上的一道题
- poj上的一道题
- 一道算法题的诸多思路(摘记)
- itpub上的Tomcat 常用文挡连接
- itpub上的ORACLE之常用FAQ V1.0
- 刚在ITPUB上看到的一条SQL
- baidu c++吧上的一道题
- CSDN论坛上的一道算法题
- 这事csdn网站上的一道题
- 一道HOJ上的题--Mixing milk
- 一道ctf pwn 的思路以及解法
- 一道ctf pwn 的思路以及解法
- 思路上的错误
- ITPUB
- android 实现侧滑菜单
- 架构整洁之道
- 余弦距离、欧氏距离和杰卡德相似性度量的对比分析
- android 的onResume方法
- 自己喜欢的句子
- ITPub 上的一道题,学习下思路
- 通过telnet手动输入HTTP
- IOS UILabel
- MyEclipse 关闭占用端口8080 8005 8009 的进程
- MyEclipse10安装SVN插件
- 破解TexturePacker加密资源 —— 使用IDA
- linux 二
- freemarker作struts2的表示层(结果页)
- Android DownloadManager下载并自动弹出安装