qqluciferzy 2023-06-19 22:54 采纳率: 42.9%
浏览 79
已结题

sql数据表关联查询!

有2张数据表 人员表 和卡表
实际一个人员可能匹配多张卡
当员工离职时,管理员会把人员名下所有的卡的状态改为离职。

之前由于没有这么作有大量的人员状态未修改
想写一个查询语句 或者存储过程
去查询2张表关联后 符合员工名下所有卡片状态均失效的时候 对人员表的一个辅助字段更新内容为离职 之类
类似找到这样的人员,并且更新人员表的某个字段

img

  • 写回答

7条回答 默认 最新

  • 竹山全栈 2023-06-19 23:01
    关注

    您好,您可以通过使用SQL语句以及关联查询来实现您所需的功能。具体步骤如下:

    1. 首先需要查询符合员工名下所有卡片状态均失效的员工。假设人员表为employee,卡表为card,并且两张表是通过employee_id关联的,可以使用如下的查询语句:
    SELECT e.employee_id FROM employee e
    WHERE NOT EXISTS (
      SELECT 1 FROM card c
      WHERE c.employee_id = e.employee_id AND c.status != '失效'
    )
    

    以上查询语句的含义是,在employee表中查询,对于每一个员工,如果该员工名下存在一张卡状态不是失效,则不符合要求。使用EXISTSNOT EXISTS子查询可以方便地判断员工名下是否存在状态不是失效的卡。

    1. 找到符合要求的员工之后,可以使用UPDATE语句将这些员工的状态修改为离职。假设需要将员工的状态更新为离职,则可以使用如下的UPDATE语句:
    UPDATE employee
    SET status = '离职'
    WHERE employee_id IN (
      SELECT e.employee_id FROM employee e
      WHERE NOT EXISTS (
        SELECT 1 FROM card c
        WHERE c.employee_id = e.employee_id AND c.status != '失效'
      )
    )
    

    以上查询语句的含义是,在employee表中查询符合前面查询条件的员工,并将这些员工的状态修改为离职。

    将以上两个查询语句合并后,即可得到最终的解决方案。另外,如果想要定期执行此更新操作,可以将以上SQL语句封装成一个存储过程,并定期调用。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 7月1日
  • 已采纳回答 6月23日
  • 创建了问题 6月19日

悬赏问题

  • ¥15 单纯型python实现编译报错
  • ¥15 c++2013读写oracle
  • ¥15 c++ gmssl sm2验签demo
  • ¥15 关于模的完全剩余系(关键词-数学方法)
  • ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音