SQL找出某一列具有相同记录的另一列的最大值 并且更新相关的第三列

表名TCOL1COL2CLO3江苏4030江苏5020江西4540江西6560语句执行后结果为表名TCOL1COL2CLO3江苏4030江苏5070江西4570江西656... 表名T
COL1 COL2 CLO3
江苏 40 30
江苏 50 20
江西 45 40
江西 65 60
语句执行后结果为
表名T
COL1 COL2 CLO3
江苏 40 30
江苏 50 70
江西 45 70
江西 65 60

UPDATE T a SET COL3='70'
WHERE COL2=(SELECT MAX(COL2) FROM T WHERE COL1=a.COL1)
语句不对 。。执行不了 求高手解答
额 前面写错了 执行后的结果应该是
表名T
COL1 COL2 CLO3
江苏 40 30
江苏 50 70
江西 45 40
江西 65 70
展开
 我来答
传说中的鹰王
2011-10-20 · TA获得超过1053个赞
知道小有建树答主
回答量:923
采纳率:87%
帮助的人:562万
展开全部
UPDATE TestTable SET C=70
from T t1
where exists (select 1 from T t2 where t1.col1=t2.col1 and t1.col2=(select max(col2) from T t3 where t3.col1=t1.col1))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
七鑫易维信息技术
2024-09-02 广告
Play Video 七鑫易维是致力于机器视觉和人工智能领域的高新科技企业,迄今已专注眼球追踪技术的研发、创新与应用超过14年,拥有完全自主知识产权,全球专利总量655余项。 作为眼球追踪技术领域的全球知名品牌,七鑫易维的产品体系覆盖眼动分... 点击进入详情页
本回答由七鑫易维信息技术提供
危献e3
2011-10-20 · TA获得超过2054个赞
知道大有可为答主
回答量:2738
采纳率:0%
帮助的人:1997万
展开全部
不知道是不是你题目意思表述有误 按照我的理解应该是
表名TestTable
A B C
江苏 40 30
江苏 50 20
江西 45 40
江西 65 60
语句执行后结果为
江苏 40 30
江苏 50 70
江西 45 40
江西 65 70

UPDATE T SET COL3=70
WHERE COL1+CONVERT(VARCHAR, COL2) IN (SELECT COL1+CONVERT(VARCHAR, MAX(COL2)) FROM T GROUP BY COL1)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
flyingFish211
2011-10-20 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.5万
采纳率:50%
帮助的人:1.1亿
展开全部
没看明白你的例子
追问
找出第一列数据相同 第二列数字最大的记录  将此条记录的第3列更新为70

额 前面写错了 执行后的结果应该是
表名T
COL1 COL2 CLO3
江苏 40 30
江苏 50 70
江西 45 40
江西 65 70
追答
UPDATE T t1
SET CLO3 = 70
WHERE NOT EXISTS (SELECT 1 FROM T WHERE t1.COL1 = COL1 AND COL2 > t1.COL2)

你那个语句也可以,如果不行,估计你是SQL SERVER,不支持别名,可以考虑用这个
UPDATE t1 SET COL3='70'
FROM T t1 INNER JOIN (SELECT COL1, MAX(COL2) AS COL2 FROM T GROUP BY COL1) t2
on t1.COL1 = t2.COL1 AND t1.COL2 = t2.COL2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式