在表

时间:2017-05-05 13:47:56

标签: sql sql-server

我有一张桌子,我希望插入旧日期的新值,但只插入唯一的日期。

t1

ID      |    Block     |    Flats  |
1       |      1       |      GF-1 |
2       |      1       |      GF-2 |
3       |      2       |      GF-1 |
4       |      2       |      GF-2 |
5       |      2       |      GF-2 |

这是我的表格的一部分,包含我希望它在复制后变成的一些样本数据

ID      |    Block     |    Flats  |
1       |      1       |      GF-1 |
2       |      1       |      GF-2 |
3       |      2       |      GF-1 |
4       |      2       |      GF-2 |
5       |      2       |      GF-2 |
6       |      1       |      GF-1 |
7       |      1       |      GF-2 |
8       |      2       |      GF-1 |
9       |      2       |      GF-2 |

复制之后它只复制了不同的值,而GF-2只复制了一次。 但是当我尝试

insert into t1 (ID,Block,Flats) select distinct Block,Flats from t1

它在第2块中复制GF-2两次。

注意:ID列会自动递增1。

1 个答案:

答案 0 :(得分:2)

您可以使用 $.ajax({ url: ../.., cache: false, type: "POST", data: JSON.stringify({objRoot: TotalTime}) , dataType: 'json', contentType: "application/json; charset=utf-8", success: function (response) { }, error: function (er) { console.log(er); } }); 生成所有行,然后清除已存在的行:

cross join

注意:这假设insert into t1(block, flats) select b.block, f.flats from (select distinct block from t1) b cross join (select distinct flats from t1) f left join t1 on t1.block = b.block and t1.flats = f.flats where t1.block is null; id列(我看到你已经说明了这种情况)。