表1:书虫数据库的模式。主键带下划线。有一些外键引用将表连接在一起;你可以利用天然连接来利用它们。
Author(aid, alastname, afirstname, acountry, aborn, adied).
Book(bid, btitle, pid, bdate, bpages, bprice).
City(cid, cname, cstate, ccountry).
Publisher(pid, pname).
Author_Book(aid, bid).
Publisher_City(pid, cid).
我只需要使用一个更新声明,就可以将查尔斯狄更斯所有书籍的价格降低20%。
尝试使用......
update book
set bprice=bprice * .2
where alastname = 'Dickens';
但没有运气,我得到语法:
ERROR: column "alastname" does not exist
LINE 3: where alastname = 'Dickens';
不确定如何使用子选择或“嵌套选择查询”来查找需要更新的元组的主键。
答案 0 :(得分:0)
简单的连接查询就是这个 -
update Book set bprice = bprice * 0.8 where bid IN (select bid from Author_Book ab join Author a on ab.aid = a.aid where a.alastname = 'Dickens');
请注意,您必须减少20%,而不是20%。
答案 1 :(得分:0)
试试这个:
update book b
set bprice=bprice * 0.2
where bid in (
select aid, bid from Author a
inner join Author_Book ab ON a.aid = ab.aid where alastname = 'Dickens'
)
答案 2 :(得分:0)
应该如下面的陈述。 请查找错误消息。
update book b
set b.bprice=b.bprice * .2
where b.id in(select ab.bid from author_book ab join author a on a.aid = ab.aid where alastname = 'Dickens') ;