根据另一行插入行

时间:2018-08-17 20:20:59

标签: sql sql-server

我的表中有一行,如果其他相似的行不存在,则需要插入它们。例如,列SubKey1 = XFITEST和列SubKey2 =5。我需要检查是否有行,其中列SubKey1 = XFITEST和列SubKey2 = 7,否则,我需要将其插入。基本上,我需要检查每个具有Subkey2 = 5的SubKey1,并确保它也具有具有相同SubKey1但SubKey2 = 7的行,如果不是,则需要插入它。

谢谢!

编辑:希望是一个很好的例子。在下面的示例中,我需要确定Subkey1 XFITEST缺少subkey2为7的行并将其插入。

这是我目前拥有的。我需要检查Subkey1中有一堆不同的值。

IMG1

SubKey1   SubKey2
AISBTF500   5
AISBTF500   7
XFITEST     5

这是我要完成的工作。

SubKey1   SubKey2
AISBTF500   5
AISBTF500   7
XFITEST     5
XFITEST     7

2 个答案:

答案 0 :(得分:1)

SQL HERE

您可以按照以下步骤进行操作:

insert into Table1(SubKey1, SubKey2)
    select SubKey1, 7 as SubKey2 from Table1 as tbl1
        where SubKey2=5 and 
            not exists(select 1 from Table1 where SubKey1=tbl1.SubKey1 and SubKey2=7)
    group by SubKey1, SubKey2

答案 1 :(得分:1)

您可以将not existsinsert into .... select配合使用。

获取没有SubKey1名称的SubKey2 = 7。然后将其插入。

create table t(
   SubKey1 varchar(50),
   SubKey2 int
);


insert into t values ('AISBTF500',5);
insert into t values ('AISBTF500',7);
insert into t values ('XFITEST',5);

INSERT INTO T (SubKey1,SubKey2)
SELECT SubKey1,7
FROM T t1
WHERE not exists (
  SELECT 1 
  FROM T tt
  WHERE tt.SubKey2 = 7 and tt.SubKey1 = t1.SubKey1
)

查询1

select * from t

Results

|   SubKey1 | SubKey2 |
|-----------|---------|
| AISBTF500 |       5 |
| AISBTF500 |       7 |
|   XFITEST |       5 |
|   XFITEST |       7 |