UPDATE Borrow SET ReturnTime = '2023-06-09' WHERE BookID = '1002' AND ReaderID = '20230101'; 1109 - Unknown table 'NEWselect' in field list
时间: 2023-12-22 19:05:00 浏览: 94
这是一个SQL语句,但是出错了。错误提示是:1109 - Unknown table 'NEWselect' in field list。这个错误通常是因为SELECT语句的别名没有正确设置导致的。请检查该SQL语句中是否有使用了SELECT语句的别名,并且别名是否正确设置。如果有问题,请修改别名并重新执行该SQL语句。另外,请确保该SQL语句中所涉及的表和字段名称都是正确的。
相关问题
create trigger Book_return_Stock after update on Borrow for each row begin IF NEWselect.ReturnTime IS NOT NULL THEN UPDATE book SET Stock = Stock + 1 where BookID = New.BookID; end if; end; UPDATE Borrow SET ReturnTime = '2023-06-09' WHERE BookID = '1002' AND ReaderID = '20230101';
这个SQL语句包括了创建触发器和执行更新语句两部分。在这里需要注意的是,语句中的NEWselect是一个错误的别名,应该是NEW。正确的触发器代码如下:
```
CREATE TRIGGER Book_return_Stock AFTER UPDATE ON Borrow
FOR EACH ROW
BEGIN
IF NEW.ReturnTime IS NOT NULL THEN
UPDATE book SET Stock = Stock + 1 WHERE BookID = NEW.BookID;
END IF;
END;
```
这个触发器的作用是,当Borrow表的某一行更新后,判断是否已经归还(即ReturnTime是否为NULL),如果已经归还,则将相应图书库存加1。注意,这个触发器中的book表和Borrow表必须存在,并且book表中必须有一个Stock字段。
接下来的UPDATE语句是用来测试这个触发器的,它将Borrow表中BookID为1002、ReaderID为20230101的借阅记录的归还时间设置为2023年6月9日。执行这个UPDATE语句后,如果触发器设置正确,那么book表中相应图书的库存应该会加1。
SELECT rname FROM borrow,reader WHERE borrow.bookid = '100001' AND borrow.readerid NOT IN (SELECT readerid FROM borrow WHERE bookid = '100002')这样对吗
这是一个 SQL 查询语句,其目的是查询借阅了书籍 '100001' 但没有借阅过书籍 '100002' 的读者的姓名。语句的基本逻辑是正确的,但是缺少对表的连接条件,应该将 borrow 表和 reader 表连接起来。可以通过 borrow 表中的 readerid 和 reader 表中的 readerid 进行连接。修改后的语句如下:
SELECT rname FROM borrow, reader WHERE borrow.readerid = reader.readerid AND borrow.bookid = '100001' AND borrow.readerid NOT IN (SELECT readerid FROM borrow WHERE bookid = '100002')
阅读全文