【发布时间】:2010-08-02 23:29:22
【问题描述】:
我有一个允许插入记录的表,这些记录非常相似,但相差一个或两个列值。例如表中有以下记录:
ID TITLE URL COUNTRY
1494 Hollywood Reporter http://www.hollywoodreporter.com USA
1497 Hollywood Reporter via Drudge Report http://www.hollywoodreporter.com NULL
2158 Hollywood Reporter via http://www.hollywoodreporter.com NULL
我想更新最后两条记录中 url 相同的国家列。 此外,我还想知道如何按 url 列对表格进行排序,以便将所有重复的 url 组合在一起,或者即使它们与您在某些情况下的相似,例如:
http://www.hollywoodreporter.com http://www.blog.hollywoodreporter.com
提前致谢。
尝试了以下方法,它在 url 相同的地方工作
UPDATE t1
SET t1.country = t2.country FROM Sources AS t1 加入源作为 t2 ON t1.url = t2.url WHERE t1.url=t2.url;
只是想弄清楚其余的。谢谢大家
更新
我能够编辑具有匹配 url 但类似的记录 http://www.pantagraph.com http://pantagraph.com http://pantagraph.com/titles
没有更新。使用排序和选择时,我可以查看所有这些记录,但是在尝试更新它们时它不起作用。我什至只是尝试了这个简单的版本:
select * from Sources s
where s.url like url
显示记录但更新时不起作用。
update Sources
set country = s.country
from Sources s
where s.url like url
【问题讨论】:
-
要回答您的第二个问题,您需要定义“相似”。为了帮助您将来解决第一个问题,请规范您的数据库,以便您将来不会遇到该问题。规范化规则不仅仅是一种学术练习——它们的存在是为了解决现实世界的问题。
-
类似的意思是它们共享相同的根 url 或域...例如 stackoverflow.com 和 stackoverflow.com/questions 谢谢您的建议...规范化...基础知识...让我试试子查询
标签: sql sql-server-2008