【问题标题】:SQL Server QUERY + UPDATESQL Server 查询 + 更新
【发布时间】:2015-01-07 16:50:46
【问题描述】:

我有一个很难做的程序,也许你能帮帮我?我知道这里有非常优秀的程序员...

USE [MuOnline]
GO
/****** Object:  StoredProcedure [dbo].[LiveMu_Transfer cashpoint to gem]  Script Date: 01/05/2015 01:29:03 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
    BEGIN 
    SELECT CashPoint FROM  [dbo].MuCashShop_DATA AS T
    UPDATE [dbo].MuCashShop_data SET CashPoint = i.CashPoint
FROM (SELECT CashPoint FROM  [dbo].MEMB_INFO) i 
JOIN MuCashShop_DATA ON i.CashPoint = MuCashShop_DATA.CashPoint
   UPDATE [dbo].MEMB_INFO SET CashPoint = '0'
END
SET NOCOUNT OFF 

问题:例如,我想每 5 分钟运行一次,我想从 MEMB_INFO 中取出 CashPoint 并将其插入到 MuCashShop_DATA.CashShop

运行正常,但问题是它没有 + 计数。

memb_info 中每小时添加一次现金点(1 个现金点),如果我更新 mucashshop_data 每个人都有 1 个现金点...我需要一个执行以下操作的查询:

UPDATE [dbo].MuCashShop_data 
SET CashPoint = CashPoint + i.CashPoint

请帮忙? :(

【问题讨论】:

  • Memb_info 和 MuCashShop_data 是什么关系?您正在加入 CashPoint,但如果您这样做,您不妨更新到 CashPoint * 2。
  • 我无法更新到* 2,我需要将实际的 chashpoint 数量存储在 mucashshop_data + memb_info cashpoint 的新值...
  • 你没有理解我的意思。两张表是什么关系?
  • 我的游戏每小时将 1 颗宝石添加到 memb_info 现金点。但在实际的 SHOP 中,现金点存储在 mucashshop_data 中,所以我想让现金点以某种方式可用......两个表都存储在 MuOnline 中。

标签: sql sql-server tsql select


【解决方案1】:

你没有回答你自己的问题吗?

改变这个:

UPDATE [dbo].MuCashShop_data SET CashPoint = i.CashPoint
 FROM (SELECT CashPoint FROM  [dbo].MEMB_INFO) i 
 JOIN MuCashShop_DATA ON i.CashPoint = MuCashShop_DATA.CashPoint

到这里:

UPDATE m SET m.CashPoint = m.CashPoint + i.CashPoint
  FROM MuCashShop_DATA m inner join
   (
          SELECT CashPoint FROM  [dbo].MEMB_INFO
     ) i 
         ON i.CashPoint = m.CashPoint

【讨论】:

  • 不,这将为当前的现金点添加 +1。我想将 memb_info 中的现金点添加到 mucashshop_data 中的当前现金点金额。例如:memb_info.cashpoint + mucashshop_data.cashpoint
  • 我假设您的数据与您预期的不一样。您可以使用 sql fiddle 设置场景吗?我的猜测是,您目前在每个表中都没有匹配的现金点值,因为这就是您要加入的。 sqlfiddle.com
  • 我的数据是一样的,所以在 memb_info 现金点是 int,在 mucashshop_data 现金点是 int,我正在尝试将 memb_info.cashpoint 添加到 mucashshop_data.cashpoint。添加 = +
【解决方案2】:

当你这样做时会发生什么。

SELECT CashPoint FROM  [dbo].MuCashShop_DATA AS T

UPDATE A
SET    CashPoint = A.CashPoint + i.CashPoint
FROM   [dbo].MuCashShop_data A
       JOIN [dbo].MEMB_INFO i
         ON i.CashPoint = a.CashPoint

UPDATE [dbo].MEMB_INFO
SET    CashPoint = '0' 

【讨论】:

  • 发生这种情况:消息 4104,级别 16,状态 1,第 7 行 无法绑定多部分标识符“MuCashShop_DATA.CashPoint”。
  • uhmm.. 现在它不需要任何东西。我必须取 memb_info.cashpoint 中的当前值,比如说 10 并添加到 mucashshop_data.cashpoint。所以我会调用第一个表 Cashpoint1(memb_info) 和 CashPoint2(mucashshop_data),所以基本上我应该做这样的事情:CashPoint1 + CashPoint2... 明白我吗?
猜你喜欢
  • 2020-11-21
  • 2016-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-15
  • 2018-03-12
相关资源
最近更新 更多