首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将唯一值插入同一表中

将唯一值插入同一表中
EN

Stack Overflow用户
提问于 2017-05-05 13:47:56
回答 1查看 1.4K关注 0票数 2

我有一个表,我想用新日期插入旧值,但只插入唯一的值。

代码语言:javascript
复制
t1

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

这是我表的一部分,我希望它在复制后成为一些示例数据。

代码语言:javascript
复制
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只出现一次。但当我试着

代码语言:javascript
复制
insert into t1 (ID,Block,Flats) select distinct Block,Flats from t1

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

注意: ID列自动递增1。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-05 14:13:09

您可以使用cross join生成所有行,然后清除已经存在的行:

代码语言:javascript
复制
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是一个identity列(我看到您已经描述为是这样的)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43806696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档