如一个表中,把电器对应的几列值均修改为最大的价格:
电器 价格
limi 90
limi 80
yuyu 100
yuyu 60
改为:
电器 价格
limi 90
limi 90
yuyu 100
yuyu 100
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;
给我分,我的肯定是对的: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.价格