表1中字段1相同的记录数〈字段2,则选出这些字段1相同的记录。
如
姓名 人数
李明 3
李明 3
王亮 2
王亮 2
谢风 1
因为姓名为李明的记录数为2〈(人数)3,所以选出来。
请问这条SELECT语句怎么写?是不是根本写不出来?写不出来我真麻烦了。
如
姓名 人数
李明 3
李明 3
王亮 2
王亮 2
谢风 1
因为姓名为李明的记录数为2〈(人数)3,所以选出来。
请问这条SELECT语句怎么写?是不是根本写不出来?写不出来我真麻烦了。
解决方案 »
- delphi如何可靠判断与外网连通?以前用的ping,担心被ping网站会屏蔽.整个InternetGetConnectedState外网断的,也显示局域网通
- delphi 7如何得到系统的显卡内存大小????????
- delphi如何实现批量设置label
- 如何获取准确的分区剩余空间????
- 大家谁知道delphi各个版本的发布时间啊,顶者有分
- 在delphi应用程序中调用Word的字数统计功能,或者实现这样的功能,主要是非中文单词,怎么做啊?
- 远程关机WinNT/Win2000/WinXP
- 当我窗口放大时想放大所有窗口上的控键
- sql语句问题?可能有点难??
- 给我这个后来者说说 DELPHI 怎么能够快速入门??
- 关于进度条ProgressBar1的用法?
- select case when Expr1 > Expr2 then Expr1 else Expr2 end FROM dbo.v3一直不知道查询分析器可以用CAST WHEN ELSE
group by 姓名
having count(*) >1 and count(*) < max(人数)
(select 姓名,count(姓名) 人数 from Table group by 姓名) a,
(select 姓名,人数 from Table) b
where a.姓名=b.姓名 and a.人数<b.人数;如果姓名不要重复,那就这样
select distinct a.姓名,b.人数 from
(select 姓名,count(姓名) 人数 from Table group by 姓名) a,
(select 姓名,人数 from Table) b
where a.姓名=b.姓名 and a.人数<b.人数;
select 姓名,人数 from Table group by 姓名,人数 having count(姓名)<人数
select ta.* from yourtable ta
where (select count(*) from yourtable where 姓名 = ta.姓名) < ta.人数
这样更好
select 姓名,Max(人数) as 人数 from Table group by 姓名 having count(姓名)<人数
楼主的情况是同名的人。人数也一样的,所以你这样的写法和我的没有区别。
当让,若同名的人,人数不同,就是你的好一些。
还是 < 3
因此需要<3.
但1/3是1个字段的值。从1/3取出3很容易,但在SQL语句中就不知该怎么办了。
如果是ORACLE,这样就可以了。
select 姓名,位次 from aa group by 姓名,位次 having count(姓名)<to_number(substr(位次,instr(位次,'/')+1,lengthb(位次)-instr(位次,'/')))
或一边个位,一边十位,那么SQL语句还可以更简单
我用的数据库是ACCESS2000。
姓名 位次
李明 1/3
李明 2/3
王亮 1/2
王亮 2/2
谢风 1/1
王海 2/2
因为李明还有一个3/3为登记所以选出李明,王海还有1/2未登记也选出来。
adoquery执行完SELECT语句出现如下效果:
adoquery.fiedvalues['姓名']=李明
执行adoquery.moveby[1];后,
adoquery.fieldvalues['姓名']=王海
如下是我根据大家的意见写出了一个,但还是不行。
select distinct 姓名 from group by 姓名 having count(姓名)<StrToInt(RightStr(位次,Length(位次)-Pos('/',位次))) order by 姓名
select distinct 姓名 from 表名 group by 姓名 having count(姓名)<mid(位次,inStr(位次,'/')+1)
WHO CAN HELP ME?
know Access, so you can look up the relevant SQL grammar of Access.
I think it will be very helpful to you.
select 姓名 from 表
group by 姓名 ,人数
having count(*)<人数
a 3
a 3
b 2
c 1
将得到
a
b