【问题标题】:Move data from one table to another in sql在sql中将数据从一个表移动到另一个表
【发布时间】:2013-07-02 10:16:47
【问题描述】:

可能有人问过类似的问题,但并不完全相同。

我需要一个简单的解决方案,让我的 sqlite 数据库将数据从一个表移动到另一个具有匹配列的表,并且新表的最大 transid +1。

例如:在我的tblsales_temp 表中,我有字段:transid, transdate, amount,status,在我的 tblsales 表中,我有相同的字段:transid,transdate,amount,status 所以,我想将数据从 tblsales_temp 移动到 tblsales,但是 tblsales 中的 transid 应该是 tblsales +1 中的最大 transid。

如何做到这一点?

【问题讨论】:

  • 如果在tblsales中你有从1到10的transID,你想让所有插入的行都得到id=11,还是从11开始(得到11、12、...、20 , ...)?
  • 我希望插入的行得到 id=11 thnx =)
  • 全部获取id=11? transid 不是主键吗?
  • 不是全部,比如 11,12,13... 是的,它是主键
  • 好的,那我的回答就行了。

标签: sql sql-server sqlite


【解决方案1】:

我猜你想要这个:

INSERT INTO tblsales
  (transid, transdate, amount, status)
SELECT 
  t.transid + i.maxid,                    -- or just "i.maxid",
  t.transdate, t.amount, t.status         -- it's not clear what you want
FROM tblsales_temp AS t
  CROSS JOIN 
    ( SELECT MAX(transid) AS maxid 
      FROM tbsales
    ) AS i;

【讨论】:

    【解决方案2】:

    试试:

    INSERT INTO tblsales
    (transid, transdate, amount, status)
    SELECT MAX(transid) + 1, transdate, amount, status
    FROM tblsales_temp
    

    【讨论】:

    • 不,你只是做了相反的事情。来自 tblsales_temp 的数据应该插入到 tblsales 中,并且在您的情况下,transid 应该是来自 tblsales 而不是 tblsales_temp 的最大值(来自 tblsales_temp 的最大值)
    • @DesterDezzods - 调整。
    猜你喜欢
    • 2014-04-09
    • 2012-04-07
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    • 2012-05-24
    相关资源
    最近更新 更多