我很困惑如何将声明的表中的值插入到选定的表中。我使用除了防止插入第一个副本,但我想插入副本的第二行。
如何将第二个值放在上表中? 我在这里实现的目的是在主表中插入第二个值来操作是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_mode上的值可以由我制作的系统更改。如果我使用不带except值的insert再次使用查询,那么主表会有3行导致问题,因为我想要反映的只是2行。
答案 0 :(得分: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;
答案 1 :(得分:0)
假设您正在使用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