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)