mysql - 使用连接创建存储过程?
问题描述
创建存储过程并尝试获取连接和组的输出时,是否需要在另一个查询中编写代码?当我运行代码时,它说该过程已经存在。所以我不确定如何在创建过程时获得正确的输入。
问题:创建一个名为 MentoredStudents 的存储过程,它将显示学生的名字和姓氏。只有正在接受指导的学生才能被选中。按学生姓氏对输出进行排序,然后是名字。
表 student 包含:firstname, lastname, studentno
表 Student_Professor 包含列导师('1' 被指导 0 没有),studentno
我的查询
DELIMITER //
CREATE PROCEDURE MentoredStudents()
BEGIN
SELECT firstname, lastname
FROM lab10.student s;
END //
DELIMITER ;
SELECT firstname, lastname
FROM lab10.student s
JOIN lab10.student_professor sp
ON s.studentno = sp.studentno
AND sp.mentor = 1
GROUP BY s.lastname, s.firstname;
解决方案
您的代码有点混乱,因为您从创建存储过程开始,但在创建一个开始良好但结束很糟糕的 SELECT 之前关闭了它。
你想要的是
delimiter //
create procedure mentoredStudents()
Begin
SELECT S.firstname, S.lastname from lab10.student S
join lab10.student_professor SP
on (S.studentno = SP.studentno)
where SP.mentored = 1
order by S.lastname, S.firstname;
END //
Delimiter ;
call mentoredStudents();
推荐阅读
- string - 通过指定索引位置检索值
- java - 是否可以在 Spring Webflux 中集成现有的 SOAP 端点?
- javascript - 如何使用 jQuery 或 JavaScript 将属性更改为整个类元素?
- php - 使用 $_POST 将数据从一个站点传输到另一个站点
- javascript - 如何在底部选项卡导航器反应导航中卸载非活动屏幕?
- terraform - 无法在 Terraform 中执行目标删除
- java - 对象的浅拷贝未正确更新原始对象
- python - Behat for Python 有哪些替代品?
- python - 如何通过每列的不同条件突出显示数据框中的某些单元格?是否也可以突出显示系列中的某些数字?
- java - 在 Spring REST api 中从 MySQL 实现存储过程时,“ParameterMode 无法解析为变量”