select bk.bookname,get_borrower_name(bk.bookid) as borrower_name from books bk join borrow_info bi on bk.bookid = bi.bookid where bk.in_out = true and bi.return_date is null and get_borrower_name(bk.bookid) = '张三';怎么修改可以使它返回多行数据
时间: 2024-03-05 14:50:38 浏览: 89
要想让查询语句返回多行数据,可以将它改写成存储过程或者使用临时表来存储查询结果。下面是一个使用存储过程的例子:
首先,创建一个存储过程,将查询结果存储到一个临时表中:
```
CREATE PROCEDURE get_borrower_books(IN p_borrower_name CHAR(10))
BEGIN
DROP TEMPORARY TABLE IF EXISTS temp_books;
CREATE TEMPORARY TABLE temp_books (
bookname CHAR(20),
borrower_name CHAR(10)
);
INSERT INTO temp_books
SELECT bk.bookname, get_borrower_name(bk.bookid) as borrower_name
FROM books bk
JOIN borrow_info bi ON bk.bookid = bi.bookid
WHERE bk.in_out = true
AND bi.return_date IS NULL
AND get_borrower_name(bk.bookid) = p_borrower_name;
SELECT * FROM temp_books;
END;
```
然后,执行该存储过程,传入参数 '张三' 来获取结果:
```
CALL get_borrower_books('张三');
```
这将返回一个包含多行数据的结果集,每一行包含一本书的名称和借阅者的姓名。
阅读全文