修改MySQL默认的结束符号为$,然后实现该sql题目。更新book表的数据记录,把可用数量(available字段)的值更改为库存总量(number字段)减去该书的在借数量。(2)使用存储过程,思路如下: 2.1 查询在借图书的在借数量 2.2 逐行读取查询结果中的书号和在借量到变量sh和zjl, 更新book表中书号等于sh的数据记录,设置 available=number-zjl; 2.3 更新book表中available字段为空的数据记录,设置 available=number;book表字段有bno,bname,number,available borrow表字段有bno,rdate 在借图书的在借数量(rdate为null表示未归还,即处于在借状态),给出实现sql语句,要求缩进并小写
时间: 2023-12-03 21:42:28 浏览: 355
Mysql 根据一个表数据更新另一个表的某些字段(sql语句)
修改MySQL默认的结束符号为$:
```mysql
delimiter $
```
更新book表的数据记录:
```mysql
update book
set available = number - (select count(*) from borrow where borrow.bno = book.bno and borrow.rdate is null);
```
使用存储过程实现:
```mysql
delimiter $
create procedure update_available()
begin
-- 查询在借图书的在借数量
declare sh char(20);
declare zjl int;
declare cursor1 cursor for select bno, count(*) from borrow where rdate is null group by bno;
declare continue handler for not found set @finished = 1;
open cursor1;
set @finished = 0;
-- 逐行读取查询结果中的书号和在借量到变量sh和zjl
read_loop: loop
fetch cursor1 into sh, zjl;
if @finished then
leave read_loop;
end if;
-- 更新book表中书号等于sh的数据记录,设置 available=number-zjl
update book set available = number - zjl where bno = sh;
end loop;
close cursor1;
-- 更新book表中available字段为空的数据记录,设置 available=number
update book set available = number where available is null;
end$
delimiter ;
```
阅读全文