SQL面试题

SQL面试题

2010-05-14 20:39 kaiyanghao123  |  分类:数据库DB  |  浏览1742次
SQL面试题
 
机构表如下:
g_cardapply表
字段(字段名/类型/长度)
g_applyno    varchar 8   申请号
g_applydate  bigint  8   申请日期
g_state      varchar 2   申请状态

g_cardapplydetail表
字段
g_applyno  varchar 8  申请号
g_name     varchar 30 申请人姓名
g_idcard   varchar 18 申请人身份证号码
g_state    varchar  2 申请状态

1、查询身份证号码为440401430103082的申请日期
2、查询同一个身份证号码有两条以上记录的身份证号码及记录个数
3、将身份证号码为440401430103082的记录在两个表中的申请状态均改为07
4、删除g_cardapplydetail表中所有姓李的记录。
我觉得第二题意思应该是:查询身份证号码(此号码应该有两条以上的记录),并且把每条记录的个数查询出来。如有:
g_applyno  g_name    g_idcard                g_state    
1000000    A         452130195502280031       1
1000001    B         452130195502280032       1
1000002    A         452130195502280031       1
1000003    A         452130195502280031       1
1000004    B         452130195502280032       1
1000005    C         452130195502280033      1
查询结果:
g_idcard             records
452130195502280031     3
452130195502280032     2
2010-05-14 23:38 提问者采纳
1). select g_applydate from g_cardapply a,g_cardapplydetail b
where a.g_applyno=b.g_applyno and b.g_idcard='440401430103082'

2). select g_idcard,count(g_idcard) as records from g_cardapplydetail
group by g_idcard having count(g_idcard)>=2

3). 为了保持状态的一致性,这里最好用事务提交
begin tran
update g_cardapply set g_state='07' from g_cardapplydetail
where g_cardapply.g_applyno=g_cardapplydetail.g_applyno
and g_cardapplydetail.g_idcard='440401430103082'

update g_cardapplydetail set g_state=07 where g_idcard='440401430103082'

commit

4). delete from g_cardapplydetail where g_name like '李%'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值