我有几张桌子。让我们打电话给他们:
以前,用户可以将商家页面添加到他们的收藏夹中。他们还可以将个别产品添加到他们的收藏夹和服务中。我把它们存放在不同的表格中。
从那以后,我改变了网站的动态,这些都被称为“喜欢”。我现在有一张新表:
表:喜欢
UniqueID是商品的主键,(即商业,服务或产品) BusinessID是业务表中业务的主键。 UserID是users表中用户的主键。 Type是varchar,(即商业,产品,服务)
我需要做的是将旧数据复制到新表中,但不确定如何。如果不存在,我也需要这样做。所以这里将是我想要实现的一个简单示例:
所以我想在ProductsFavorite表中有以下内容:
FavoriteID ProductID BusinessID UserID
------------|-------------|--------------|---------
1 10 230 5
2 13 135 7
3 6 300 5
我想插入迁移,或将这些迁移到新的Likes表中,但前提是该人尚未使用新系统的产品。例如:
UniqueID BusinessID Type UserID
------------|--------------|-------------|---------
10 230 Product 5
13 135 Product 7
6 300 Product 5
我不确定管理这个的最好方法,还需要确保那里没有“双重”。新系统已经存在了几天,所以有些人可能“喜欢”他们以前“添加到收藏夹中的东西。”
使用SQL Server 2008 R2,Management Studio等
感谢您的帮助!
==========编辑===========
我正在使用测试表取得一些进展。
INSERT INTO Like_Test (
UniqueID
,BusinessID
,UserID
,Type
,Date_Created
)
SELECT
a.ProductID
,a.BusinessID
,a.UserID
,'Product'
,a.Date_Created
FROM ProductFav a
WHERE NOT EXISTS (SELECT * FROM Like_Test b WHERE b.UniqueID = a.ProductID AND b.UserID = a.UserID AND b.ElementType = 'Product')
如果我从Like_Test表中删除前1个条目,则运行上述查询应插入单个记录。好吧,我说它应该但显然我做错了。所以此插入的WHERE子句不起作用。