主键ID Mid name no
1 12 笔 120120
2 12 笔 120120
3 12 笔 102103
4 14 书 150123
5 14 书 150123
6 15 道具 156154
7 16 神马 201012表名 bs
select * from bs as s where EXISTS (select 1 from bs where
mid=s.mid group by mid having(count(mid))>1)
得到结果
主键ID Mid name no
1 12 笔 120120
2 12 笔 120120
3 12 笔 102103
4 14 书 150123
5 14 书 150123select * from bs as s where EXISTS (select 1 from bs where
mid=s.mid and no!=s.no)
得到结果
主键ID Mid name no
1 12 笔 120120
2 12 笔 120120
3 12 笔 102103我只是想要个意思 为什么单个Mid的数据查不出来... 谁能告诉我 这两句话的意思 我以前很少用EXISTS 的
1 12 笔 120120
2 12 笔 120120
3 12 笔 102103
4 14 书 150123
5 14 书 150123
6 15 道具 156154
7 16 神马 201012表名 bs
select * from bs as s where EXISTS (select 1 from bs where
mid=s.mid group by mid having(count(mid))>1)
得到结果
主键ID Mid name no
1 12 笔 120120
2 12 笔 120120
3 12 笔 102103
4 14 书 150123
5 14 书 150123select * from bs as s where EXISTS (select 1 from bs where
mid=s.mid and no!=s.no)
得到结果
主键ID Mid name no
1 12 笔 120120
2 12 笔 120120
3 12 笔 102103我只是想要个意思 为什么单个Mid的数据查不出来... 谁能告诉我 这两句话的意思 我以前很少用EXISTS 的
1.第一句话:找记录中mid字段有重复的,记录
2.第二句话:按mid字段找出记录中,no不唯一的记录
EXISTS 用法,可以百度啊上面两句话,就是sql中常用的内关联子查询
mid=s.mid group by mid having(count(mid))>1)
查询mid 是相同的并且数量>1的数据
mid=s.mid group by mid having(count(mid))>1) --明显不会出现单挑数据 有条件having(count(mid))>1
2:select * from bs as s where EXISTS (select 1 from bs where
mid=s.mid and no!=s.no)
EXISTS : 指定一个子查询,检测行的存在 (EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False)mid=s.mid and no!=s.no 能满足的条件 返回 True 或者false
第二句找不唯一记录;如果相同的mid的no号都相同则不显示,所以结果集一中的4和5在结果集二中看不到。
有点儿拗口,举个例子,你现在有1000条mid = 14, no = 150123的数据,在第二句查询结果集中将不会显示这1000条;如果这1000条里面有1条是mid = 14, no = 150122其他999条是mid = 14, no = 150123,那么这1000条都会显示。
mid=s.mid group by mid having(count(mid))>1)
你后面子查询的条件 count(mid)>1 当然查询不出只有一条的数据了 改成>0就可以了
但也有特殊情况,在子查询中,外层查询用Exists比用In性能好;内层查询用In比Exists性能好。
也就是说 mid 只要要有一样的两条以上的数据 才会查出来 而且mid 相同的数据中 至少要存在no 不一样
我知道光是看结果理解意思肯定是不行 下次再遇到类似还不是一样不会写...所以我必须理解意思查询结果倒是没有出现问题,...最主要的是我不明白这句话的意思....也许是不理解EXISTS 的意思....感谢各位提供的结果
mid=s.mid group by mid having(count(mid))>1)显示分类有两条信息及以上的商品select * from bs as s where EXISTS (select 1 from bs where
mid=s.mid and no!=s.no)
显示分类相同,但编号不同的商品