MySQL使用UPDATE和SELECT更新表中的许多记录和列
我已将最后三个字段添加到此表中,但它们是空的。所有记录都填写了前三名。表定义是 mysql>描述nh3tkMySQL使用UPDATE和SELECT更新表中的许多记录和列,mysql,sql-update,Mysql,Sql Update,我已将最后三个字段添加到此表中,但它们是空的。所有记录都填写了前三名。表定义是 mysql>描述nh3tk +-----------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------------+-------------+------+-----+---------+-------+ |
+-----------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+-------+
| spectra | varchar(50) | NO | PRI | NULL | |
| value | float | NO | | NULL | |
| error | float | NO | | NULL | |
| nonthermal_FWHM | double | YES | | NULL | |
| sound_speed | double | YES | | NULL | |
+-----------------+-------------+------+-----+---------+-------+
有效的Select查询是
select nh3tk.spectra,
pow((pow(2.35*nh3lw.sd_lw,2)-1.38065e-23*8*ln(2)*nh3tk.value/2.82e-26),0.5) as nonthermal_FWHM,
pow(1.38065e-23*nh3tk.value/(2.33*3.348e-27),0.5) as sound_speed
from nh3tk
left join nh3lw on nh3tk.spectra=nh3lw.spectra;
现在我只需要从该查询中获取两个计算字段,并将它们放在nh3tk中的正确字段中,其中光谱匹配
任何帮助都将不胜感激
致意
詹姆斯
不确定
错误,因为您没有在查询中选择它。我最后用它来完成这项任务
UPDATE nh3tk
LEFT JOIN nh3lw ON nh3lw.spectra = nh3tk.spectra
SET nonthermal_FWHM = pow((pow(2.35*nh3lw.sd_lw,2)-1.38065e-23*8*ln(2)*nh3tk.value/2.82e-26),0.5),
sound_speed = pow(1.38065e-23*nh3tk.value/(2.33*3.348e-27),0.5);
感谢大家的回答,并抽出时间来看看这个,
詹姆斯对不起,这不管用。我得到以下错误,错误1064(42000):您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解第4行“在nh3lw.spectra=nh3tk.spectra上加入nh3lw”附近使用的正确语法。不同品牌的sql使用不同的更新语法,我完全错了,但它看起来像是Quassnoi在使用MSSQL。@詹姆斯:对不起,弄乱了子句顺序。请现在试一试。
UPDATE nh3tk
LEFT JOIN nh3lw ON nh3lw.spectra = nh3tk.spectra
SET nonthermal_FWHM = pow((pow(2.35*nh3lw.sd_lw,2)-1.38065e-23*8*ln(2)*nh3tk.value/2.82e-26),0.5),
sound_speed = pow(1.38065e-23*nh3tk.value/(2.33*3.348e-27),0.5);