SQL Update语句数据库修改

时间:2015-02-24 17:56:53

标签: sql postgresql sql-update

表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';

不确定如何使用子选择或“嵌套选择查询”来查找需要更新的元组的主键。

3 个答案:

答案 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') ;