【发布时间】:2017-01-13 18:32:55
【问题描述】:
我有两张桌子,比如说桌子书籍和桌子作者。
表书有4个字段,BookId、Title、Author、Publisher
表 authors 有 5 个字段 AuthorID、Title、Author、Publisher、Price
我想更新书籍以获取作者的价格字段。没有一个唯一键,因此标准是标题、作者或出版商是否匹配,然后将该价格添加到书籍中。在我的情况下,作者在 Title、Author 或 Publisher 中有许多重复的值,所以我会因为重复而出现更新错误。所以基本上我如何在 oracle 中使用该标准更新书籍,如果出现重复,只需选择任何记录,将它放在那里并不重要?其他语言有 top 命令可以用来做这样的事情,但看起来 Oracle 缺少这个。
我自己尝试了各种合并和更新语句,但没有成功。比如:
UPDATE books n
set n.price = (
select t.price from authors t where
n.title= t.title or
n.author = t.author or
n.publisher = t.publisher)
但是该语句没有检查重复项并阻止它们因此失败,所以我错过了那个键。
【问题讨论】:
-
这个要求没有意义。如果 BOOKS 表中的一本书按出版商与 AUTHORS 表中的一行匹配,则显示作为这本书的价格该出版商曾经出版过的任何书籍(一些随机书籍)的价格?为什么你会做那样的事情?
-
我不做表,我只是按照他们的要求做。我同意这是愚蠢的。
-
@mathguy 我知道...有时我通过回答有关如何做坏事的问题来感觉自己是一个推动者。