今天测试一条数据在多个数据表里。
学生A在学生库、师生关系表、少先队员表、足球队、排球队中均有。
有部分学生申请名称变更。如何进行动态查询几个学生的名称数据在各个表中的显示,校验是否都同步更新了?
学生id在各个表中均存在。
CREATE PROCEDURE `student_info`(student_id varchar(500))
BEGIN
/*学生主表*/
SELECT * FROM student t1 WHERE id=student_id;
/*师生关系表 无 */
SELECT * FROM teacher_student t2 WHERE t2.student_id=student_id;
/*协议审核数据*/
SELECT * FROM sxdy t3 WHERE t3.student_id=student_id;
SELECT * FROM footballteam t4 WHERE t4.student_id=student_id;
END
变更程序执行某个学生名称变更之后,如果检查四张表的数据是否正确变更,需要修改sql四次,并执行四次,在修改无错误的情况下,才能看到数据是否正常变更。
通过存储过程,只要执行call student_info('XXXX') ;就会得到四个结果。
赠送小知识:
1、如果通过某种条件得到多个学生的Id,比如sql
GROUP_CONCAT
存储过程就可以使用FIND_IN_SET函数。
2、存储过程中参数的给定长度要尽可能的大,否则会截取传参的长度,不然就像我今天一样,明明穿了10个参数,结果就查询出来4个。数据又没有什么问题。应该全部查出来的。