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 '李%'