热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

探讨UPDATE语句中WHERE条件使用子查询的常见问题与解决方案

本文探讨了在使用UPDATE语句时,通过子查询在WHERE条件中处理多个ID的常见问题及解决方案。具体而言,当需要根据主键ID更新数据表中的记录时,如果传入的ID不止一个,而是多个,如何高效且准确地进行更新操作。文章详细分析了子查询在WHERE条件中的应用,并提供了多种优化方案,以确保数据更新的准确性和性能。
需求是这样的。
有一张数据表,根据ID(主键。)对其进行更新。
可能有时候传入的不只一个ID.可能多个。
然后对其UPDATE SET AKCount = AKCount +1 WHERE ID --(假如ID有:1,2,3,1,1,2)
这时需要对ID为1的进行三次更新,ID为2的进行2次更新,ID为3的进行1次更新。该怎么做。

11 个解决方案

#1


UP。。。

#2


关注 。 帮顶。

#3


id IN(id列表)

#4


引用 3 楼 ldslove 的回复:
id IN(id列表)

那个只能更新一次。

#5


引用 3 楼 ldslove 的回复:
id IN(id列表)

统计ID的相同个数

 AKCount = AKCount +ID的相同个数

#6


引用 5 楼 ldslove 的回复:
引用 3 楼 ldslove 的回复:
id IN(id列表)

统计ID的相同个数

 AKCount = AKCount +ID的相同个数

实在想不到怎么写。

#7


UP。

#8


UP.

#9


    up学习

#10



declare @str varchar(8000),@start int,@end int
set @str = '1,2,3,1,1,2,'  --如果输入串不是以分割字符结尾,则 set @str = @str+‘,’
set @start = 1
set @end = charindex(',',@str,@start) 
declare @sqlStart varchar(8000)
set @sqlStart='UPDATE TB SET AKCount = AKCount + 1 WHERE ID ='''
declare @sqlEnd varchar(2)
set @sqlEnd = ''''
declare @fullSql varchar(2000)
while(@end<>0)
    begin        
set @fullSql = @sqlStart+substring(@str,@start,@end-@start)+@sqlEnd 
print @fullSql
exec (@fullSql)
        set @start = @end+1
        set @end = charindex(',',@str,@start)
    end 

#11


学习了

推荐阅读
author-avatar
萝莉吴文娟
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有