gpt4 book ai didi

mysql - 如何处理没有行的 IN 子句返回的子查询

转载 作者:行者123 更新时间:2023-11-29 09:29:22 26 4
gpt4 key购买 nike

我有一个架构,其中分配位置的员工详细信息保存在“员工”表中。

分配给位置的所有角色的数量为 max_limit,并且分配的数量位于“loc_role_limit”表中

分配给员工的所有角色都保存在“emp_role”表中

现在,当一名员工被停用时,我想减少该员工的指定位置和角色

UPDATE loc_role_limit lrl SET lrl.assigned_count = lrl.assigned_count + 1  
WHERE lrl.location = (select e.location from employee e where e.empCode = ?1)
AND lrl.role IN (select er.roleCode from empl_role er where er.empCode = ?1)

但是,只有当没有为员工分配角色并且想要停用角色时才会出现 1 个问题

    AND lrl.role IN  (select er.roleCode from emp_role er where er.empCode = ?1) 

那么这个 IN 子句将给出空列表。

一种方法是我将执行另一个查询,如果大小大于 0,那么我将调用 UPDATE 查询。但是,这又是来自应用程序的 2 个查询。

有什么办法可以从查询端处理这个问题吗?

最佳答案

您可以使用EXISTS查询,例如

UPDATE loc_role_limit lrl SET lrl.assigned_count = lrl.assigned_count + 1  
WHERE lrl.location = (select e.location from employee e where e.empCode = ?1)
AND EXISTS (select er.roleCode from empl_role er where er.empCode = ?1)

关于mysql - 如何处理没有行的 IN 子句返回的子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59024819/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com