问题
我有以下情况:当用户在我的网站上没有登录,他可以添加产品到购物车。但是,当他点击购物车信息页面中的“购买”按钮时,他应该登录到结账并完成订单。这是这里的主要逻辑。
因此,想象一下,用户有两个产品,还没有登录(他已经在网站上有帐户)。然后,他将进行登录,他已经有完全相同的2个产品的帐户,但与不同的数量。
目标:
我想在购物车表中做一个类似产品的总和,然后删除类似产品的副本。
Sql表
Id Qt user_id outer_user_id
product-1 1 22 NULL
product-1 3 NULL 45
product-2 1 NULL 45
product-2 2 22 NULL
product-2 5 27 NULL当用户刚刚登录时,我希望得到以下结果:
Id Qt user_id outer_user_id
product-1 4 22 NULL
product-2 3 22 NULL
product-2 5 27 NULL
-- outer user with outer_user_id = 45 will login as inner user with user_id = 22正如你所看到的,我想从多个相似的地方创造出独特的产品,并把它们的数量相加。如何在Server数据库中处理请求?谢谢!
注意:查询应该更新表并删除一些行,而不是选择结果。
发布于 2017-06-28 16:10:58
下面是代码片段:使用update语句和CTE删除重复记录。例如,我只是按id分组,但对于您的情况,您需要按user_id和product_Id进行分组。
Create table #temp(id int , dvalue int)
Insert into #temp(id,dvalue) values(1,10)
Insert into #temp(id,dvalue) values(1,2)
Insert into #temp(id,dvalue) values(1,3)
Insert into #temp(id,dvalue) values(2,10)
Insert into #temp(id,dvalue) values(2,1)
Insert into #temp(id,dvalue) values(2,1)
select * from #temp
Update t1 set t1.dvalue=(select sum(dvalue) from #temp t group by id having
t.id=t1.id) from #temp t1;
WITH CTE AS
(
SELECT *,ROW_NUMBER() OVER (PARTITION BY id order by dvalue) AS RN
FROM #temp
)
DELETE FROM CTE WHERE RN<>1我只是用了一些其他的表格和列名-希望它能帮助你。
https://stackoverflow.com/questions/44807314
复制相似问题