簡體   English   中英

子查詢使用我的 sql 返回超過 1 行

[英]Subquery returns more than 1 row using my sql

我正在嘗試創建一條 select 語句,從 MySQL 數據庫中選擇用戶 ID(員工或領導或經理)和全名。 取決於 id 部門,id 優先級。 代碼是:

PROCEDURE `get_parent`(id_dept int, id_priorty int )
BEGIN
if(select employee_tb.id_dept  from employee_tb where (employee_tb.id_dept=id_dept&&3=id_priorty))>0
then
begin
select id_employee ,full_name,3 as type from employee_tb;
end;
elseif(select leader_tb.id_dept from leader_tb where (leader_tb.id_dept=id_dept&&id_priorty=2))>0
 then
 begin
 select id_leader, full_name, 2 as type from leader_tb;
 end;
 elseif(select manager_tb.id_dept from manager_tb where (manager_tb.id_dept=id_dept&&id_priorty=1))>0
 then 
 begin
 select id_manager, full_name, 1 as type from manager_tb;
 end;
 else
 select "failed"as result ;
 end if;
END
select id_employee ,full_name,3 as type from employee_tb;

select id_leader, full_name, 2 as type from leader_tb;

select id_manager, full_name, 1 as type from manager_tb;

檢查條件后代碼中的那 3 行無論如何都會從表中選擇所有記錄。

要解決此問題:

PROCEDURE `get_parent`(id_dept int, id_priorty int )
BEGIN
if(select employee_tb.id_dept  from employee_tb where (employee_tb.id_dept=id_dept&&3=id_priorty))>0
then
begin
select id_employee ,full_name,3 as type from employee_tb where (employee_tb.id_dept=id_dept&&3=id_priorty);
end;
elseif(select leader_tb.id_dept from leader_tb where (leader_tb.id_dept=id_dept&&id_priorty=2))>0
 then
 begin
 select id_leader, full_name, 2 as type from leader_tb where (leader_tb.id_dept=id_dept&&id_priorty=2);
 end;
 elseif(select manager_tb.id_dept from manager_tb where (manager_tb.id_dept=id_dept&&id_priorty=1))>0
 then 
 begin
 select id_manager, full_name, 1 as type from manager_tb where (manager_tb.id_dept=id_dept&&id_priorty=1);
 end;
 else
 select "failed"as result ;
 end if;
END

如果有一條記錄匹配這個 where 子句,它當然會給出一條記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM