当前位置: 首页 > 知识库问答 >
问题:

子查询使用我的sql返回1行以上

鲁城
2023-03-14

我试图从一个MySQL数据库中创建一个select语句来选择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

共有1个答案

杨良平
2023-03-14
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子句,它当然会给出一条记录。

 类似资料:
  • 问题内容: 桌子: 我的查询: 我收到“ MySQL子查询返回多个行”错误。 我知道此查询可以使用以下查询的解决方法: 然后使用php循环遍历结果并执行以下查询以获取和回显它: 但是我认为可能会有更好的解决方案? 问题答案: 简单的解决方法是在子查询中添加一个子句: 一个更好的选择(就性能而言)是使用联接:

  • 我不知道当我在Mysql中运行查询时,会出现此错误。 #1242-子查询返回超过1行 谁能帮我解决这个问题?

  • 当“事件ID”与“用户ID”匹配时,im会尝试从我的“事件”表中选择所有数据。然而,我得到一个错误1242,子查询返回超过1行。 我理解我的子查询将返回多行,因为一个用户可以参加多个事件。那么我如何使我的查询接受多行呢?

  • 子查询返回超过1行?? 下表是我想要达到的目标 这就是为什么我认为我需要使用group by来区分user_id 我已经看过了 子查询返回超过1行-MySQL 子查询返回的行数是否超过1行? 但还是不明白。 通过连接两个不同的表,我得到了下表。 谁能帮我解决这个问题?

  • 问题内容: 以下查询应返回从动漫中扮演角色的人物的姓名。但我收到以下错误: Blockquote ORA-01427:单行子查询返回多个行 提前致谢! 问题答案: 代替 使用 查询中有5个条件需要更改。 UPD 另外,您的查询等同于

  • 1. 定义 慕课解释:子查询,又称嵌套查询,是一种嵌套在其它 SQL 查询的 Where 字句中的查询。 2. 前言 本小节,我们将一起学习 SQL 子查询。 SQL 子查询是一种复杂的查询方式,一般子查询语句都可以被分为主查询部分和子查询部分。子查询部分为主查询部分服务,常用于为主查询返回其所需数据,或者进一步筛选主查询数据。 子查询的知识点其实不多,学习它的难点在于如何将 SQL 查询使用熟练