描述的太模糊,我以下列假设为前提给你解答
员工表(t1):前提有 员工id,身份z号,是否在职标识,入职、离职时间
打卡记录表(t2):打卡人身份z号,打卡时间
select t1.员工ID,t1.员工姓名,t1.员工身份z号码,t2.打卡时间from t1 join t2 on t1.员工身份z号码 = t2.员工身份z号码
where t1.在职标识 = '在职'
AND t2.打卡时间 >= t1.入职时间
根据是否引用外部查询,可以将子查询分为相关子查询和非相关子查询
非相关子查询,这种子查询的查询结果与外部查询无关,可以单独执行的.例如
update newtable set name='max' where id = (select max(id) from oldtable)这里需要注意的是:使用=号时,子查询必须只有一个值,这个叫做单值子查询.
相关子查询,就以你的查询语句为例
update newtable set id=(select id from oldtable where name=newtable.name)逻辑运行过程,是将newtable中的一行数据中的name取出,传入到子查询中,这是子查询的查询结果返回给外部查询,再更新id.然后使用同样的方法,处理下一行.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)