SQL更新语句数据库修改
SQL Update statement Database modify
Table 1:书呆子数据库的架构。主键带有下划线。 link 表有一些外键引用;您可以将这些与自然连接一起使用。
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).
我需要将 Charles Dickens 的所有书籍的价格降低 20%,仅使用一个更新语句。
尝试使用...
update book
set bprice=bprice * .2
where alastname = 'Dickens';
但运气不好,我得到了语法:
ERROR: column "alastname" does not exist
LINE 3: where alastname = 'Dickens';
不确定如何使用子选择或 'nested select queries' 来查找我需要更新的元组的主键。
简单的连接查询应该是这样的 -
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%。
试试这个:
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'
)
应该是像下面这样的语句。
请查找错误消息。
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') ;
Table 1:书呆子数据库的架构。主键带有下划线。 link 表有一些外键引用;您可以将这些与自然连接一起使用。
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).
我需要将 Charles Dickens 的所有书籍的价格降低 20%,仅使用一个更新语句。
尝试使用...
update book
set bprice=bprice * .2
where alastname = 'Dickens';
但运气不好,我得到了语法:
ERROR: column "alastname" does not exist
LINE 3: where alastname = 'Dickens';
不确定如何使用子选择或 'nested select queries' 来查找我需要更新的元组的主键。
简单的连接查询应该是这样的 -
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%。
试试这个:
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'
)
应该是像下面这样的语句。 请查找错误消息。
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') ;