2016-11-24 79 views
0

在我的MySQL表之间的最大值Mysql的更新场我有3个领域:重量,gweight,volweight与其他2场

gweight和volweight有不同的价值观,我想和gweight之间的最大值来更新重和体重。 谢谢

+0

你是什么意思之间的最大值?你的意思是两个重量值和体重值是两者中较大的一个? – Drew

+0

是的!我需要它... –

回答

1
UPDATE myTable 
SET weight=GREATEST(gweight,volweight); 

警告这将更新每一行。

GREATEST()请参阅手册页。

其他注意事项:

CREATE TABLE xxx2 
( id int auto_increment primary key, 
    col1 int null, 
    col2 int null, 
    col3 int null 
); 

INSERT xxx2(col1,col2) values (null,1),(1,2); 

UPDATE xxx2 
SET col3=GREATEST(col1,col2); 
SELECT * FROM xxx2; 
+----+------+------+------+ 
| id | col1 | col2 | col3 | 
+----+------+------+------+ 
| 1 | NULL | 1 | NULL | 
| 2 | 1 | 2 | 2 | 
+----+------+------+------+ 

在列,以便NULL不会使幸福GREATEST()。如果您的字段不可为空则不存在上述不烦恼,你可以忽略以下修正:

TRUNCATE xxx2; 
INSERT xxx2(col1,col2) values (null,1),(1,2); 

UPDATE xxx2 
SET col3=GREATEST(COALESCE(col1,0),COALESCE(col2,0)); 
SELECT * FROM xxx2; 
+----+------+------+------+ 
| id | col1 | col2 | col3 | 
+----+------+------+------+ 
| 1 | NULL | 1 | 1 | 
| 2 | 1 | 2 | 2 | 
+----+------+------+------+ 

所以COALESCE()会解决NULL问题。

+0

非常感谢你! –