sql如何根据一个字段内容修改 另一个字段的值为(取最大值) 20C

如一个表中,把电器对应的几列值均修改为最大的价格:

电器                价格
    limi                  90
    limi                  80
    yuyu                100
    yuyu                 60

    改为:
        电器                价格
    limi                  90
    limi                  90
    yuyu                100
    yuyu                100
sql

9个回答

update table a set 价格 = (select max(价格) from table b where a.电器 = b.电器)

先把值改成最大值,然后再修改

分两步吧:
第一步先求出各个电器最大值
sql: select bb 电器, max(cc) 最大价格 from TBLAE group by bb
第二步根据第一步的集合进行循环修改
update TBLAE set cc= where bb=

先找到电器表2里面与电器表1里待修改的同一电器的最大价格
select max(价格) from table 电器表2 where 电器表2.电器 =电器表1.电器
再更新电器表1里面所有这一电器的价格为最大价格
update 电器表1 set 价格 =jg (select max(价格) as jg,电器表1.电器 as dq from table 电器表2 where 电器表2.电器 =电器表1.电器) where 电器表1.电器=dq
当然可以在更新价格前给电器表1按电器分组

如果是ORACLE数据库的话,用下面这种最快:

--表名为tb_test

MERGE INTO tb_test A
USING (select B.电器, max(B.价格) from tb_test B) C
ON (A.电器 = C.电器)
WHEN MATCHED THEN
UPDATE SET A.价格 = C.价格;
commit;

NET_NDSC_WZP
NET_NDSC_WZP 回复NET_NDSC_WZP: USING (select B.电器, max(B.价格) from tb_test B) C 改为 USING (select B.电器, max(B.价格) 价格 from tb_test B group by B.电器) C
2 年多之前 回复
NET_NDSC_WZP
NET_NDSC_WZP USING (select B.电器, max(B.价格) from tb_test B) C 改为 USING (select B.电器, max(B.价格) from tb_test B group by B.电器) C
2 年多之前 回复

给我分,我的肯定是对的:UPDATE 表名 t1 SET 价格 =
(SELECT a FROM (SELECT MAX(价格) a,电器 FROM 表名 GROUP BY 电器) AS t2 WHERE t2.电器=t1.电器);

update product t1 set price = (select price from (select name, max(price) as price from product group by name) as t2 where t2.name=t1.name);

在表中加一个UPDATE触发器。设表名为TBL
针对SQLSERVER:
CREATE TRIGGER TR_CHNG_Price ON TBL
FOR UPDATE
AS
BEGIN
IF UPDATE( 价格 )
BEGIN
UPDATE TBL SET 价格 = x.价格
FROM ( SELECT z.电器, 价格=MAX( z.价格 ) FROM TBL z JOIN inserted y ON z.电器 = y.电器 GROUP BY z.电器 ) as x
WHERE x.电器 = TBL.电器 AND TBL.价格 <> x.价格
END
END

若sql server 2005以上可以这么比较快

UPDATE T1 SET 价格 = T2.价格
FROM 表名 AS T1
INNER JOIN
(
SELECT 电器, MAX(价格) AS 价格
FROM 表名
GROUP BY 电器
)AS T2 ON T1.电器 = T2.电器
WHERE T1.价格 <> T2.价格

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问