Sql 从临时表中插入重复行

Sql 从临时表中插入重复行,sql,sql-server,Sql,Sql Server,我不知道如何将声明表中的值插入到所选表中。我使用Exception来防止插入第一个副本,但我想插入副本的第二行 如何将第二个值放入上表? 我在这里要实现的一点是在主表中插入第二个要操作的值是time_mode值 这是我的问题 INSERT INTO temp_time(SwipeID,tdate,ttime,time_mode,raw_data,[Shift],eid,machineip) SELECT a.SwipeID,a.tdate,a.ttime,a.time_mode,a.r

我不知道如何将声明表中的值插入到所选表中。我使用Exception来防止插入第一个副本,但我想插入副本的第二行

如何将第二个值放入上表? 我在这里要实现的一点是在主表中插入第二个要操作的值是time_mode值

这是我的问题

INSERT INTO temp_time(SwipeID,tdate,ttime,time_mode,raw_data,[Shift],eid,machineip)
    SELECT a.SwipeID,a.tdate,a.ttime,a.time_mode,a.raw_data,1, eid FROM @temp_time
    EXCEPT
    SELECT SwipeID,tdate,ttime,time_mode,raw_data,Shift,eid,machineip from temp_time

从上面的查询中,只插入一个值。我的客户改变了主意,他们希望复制的值得到反映。更改time_模式上的值可以由我制作的系统更改。如果我再次使用insert而不使用except值,则主表将有3行,这会导致问题,因为我只想反映这2行。

假设您使用的是MYSQL

INSERT INTO your_first_table(SwipeID,tdate,ttime,time_mode,raw_data,shift,eid,machineip)
    SELECT a.SwipeID,a.tdate,a.ttime,a.time_mode,a.raw_data,1,a.eid,a.machineip FROM your_second_table a ORDER BY a.SwipeID DESC LIMIT 1, 1

我想我终于正确地理解了你的问题。假设您已经运行了第一个查询,在第二个表中插入了没有重复数据的数据,现在您希望插入其余的原始重复数据

在这种情况下,可以通过删除已插入的前几行来执行此操作:

WITH dupes AS (
    SELECT *, ROW_NUMBER() OVER(
            PARTITION BY SwipeID, tdate, ttime, time_mode, raw_data,[Shift], eid, machineip
            ORDER BY (SELECT(0))
        ) AS row_num
    FROM SourceTable
)
INSERT INTO DestinationTable (/*columns*/)
SELECT /*values you need*/
FROM dupes
WHERE row_num > 1;

为什么要插入重复的值?通常,这是您想要摆脱的类型。如果您想要创建重复行,那么您的表对于其主键应该如何工作?因为它们想要第二个值,并且可以更改其时间模式如果您想要插入更改了一个值的重复行,然后简单地编写一个insert语句,除了要更改的列之外,其他列都是相同的,并将新值放在相应的位置。e、 g.插入新表a、b、c、d、e从旧表中选择前1个表a、b、c,“新值”,e,其中。。。或者插入新表a、b、c、d、e从新表中选择a、b、c“新值”,e,谢谢!我只是担心,如果他们再次运行查询,行计数2及以上将在源表中重复。@Clarice好的,您可以通过[Related fields]从DestinationTable组中选择COUNT*AS total,然后在row_num>total的位置加入。