SELECT DISTINCT值和INSERT INTO表

Joh*_*rik 5 sql select distinct sql-insert sql-server-2012

我想要一个具有重复多次值的列,并且只获取该值一次并将其存储以供以后使用,但同时我希望在与该不同列相同的行中获得另一个值.

A      B       C
32263  123456  44
32263  123456  45
32263  123456  46
32264  246802  44
32263  246802  45
32264  246802  46
32265  369258  44
32265  369258  45
32265  369258  46
Run Code Online (Sandbox Code Playgroud)

A,B,C代表三列.现在忽略C.

我的问题是:如何在此表中获取此信息并将其存储,以便稍后在脚本中使用它?

这是我尝试过的:

use databaseName

select distinct A from tableName
order by A
Run Code Online (Sandbox Code Playgroud)

结果是:

A
32263
32264
32265
Run Code Online (Sandbox Code Playgroud)

我试图让它也给我B的价值.(注意,无论我选择哪一行都没关系,因为无论AI选择什么,B的值对于给定的A都是相同的.)我们现在忽略C.

结果应该是:

A      B
32263  123456
32264  246802
32265  369258
Run Code Online (Sandbox Code Playgroud)

现在,一旦我得到它,我想使用从查询中获得的值插入一行.这就是C的用武之地.我想做这样的事情:

use databaseName

insert into tableName (A, B, C)
values (32263, 123456, 47)
Run Code Online (Sandbox Code Playgroud)

当然我不希望将值直接放在那里,而是有一些循环,它将遍历我找到的3个不同A值中的每一个.

简而言之,我的桌子应该来自:

A      B       C
32263  123456  44
32263  123456  45
32263  123456  46
32264  246802  44
32263  246802  45
32264  246802  46
32265  369258  44
32265  369258  45
32265  369258  46
Run Code Online (Sandbox Code Playgroud)

至:

A      B       C
32263  123456  44
32263  123456  45
32263  123456  46
32263  123456  47 -
32264  246802  44
32263  246802  45
32264  246802  46
32264  246802  47 -
32265  369258  44
32265  369258  45
32265  369258  46
32265  369258  47 -
Run Code Online (Sandbox Code Playgroud)

我在新添加的行旁边放置了破折号,以帮助您查看更改.

我想我应该做一些循环遍历所有三个不同的A值的循环,但我的问题是如何做到这一点?

谢谢你的时间.

Joh*_*Woo 11

你可以用INSERT INTO... SELECT这个声明,

INSERT INTO tableName (A, B, C)
SELECT A, B, MAX(C) + 1
FROM tableName
GROUP BY A, B
Run Code Online (Sandbox Code Playgroud)