需求:把test_his里面ts1,ts2,ts3字段的汉字变成sm_dict_grade里面的id。两个表的关联就是sm_dict_grade表的name。
说明,sm_dict_grade里面的grade是等级的意思,一共有三级,有的name值是相同的,但是上级不同
需求:把test_his里面ts1,ts2,ts3字段的汉字变成sm_dict_grade里面的id。两个表的关联就是sm_dict_grade表的name。
说明,sm_dict_grade里面的grade是等级的意思,一共有三级,有的name值是相同的,但是上级不同
不一定非要一条sql啊,分三条就是,类似更新第一级的:
UPDATE test_his AS t
JOIN sm_dict_grade AS s ON s.GRADE = 1 AND s.NAME = t.TS1
SET t.TS1 = s.ID
8 回答6.5k 阅读
4 回答658 阅读✓ 已解决
2 回答3.4k 阅读
1 回答2.5k 阅读✓ 已解决
5 回答1.5k 阅读
3 回答1.9k 阅读✓ 已解决
2 回答2.2k 阅读
修改第一等级,GRADE=1并且TS1=NAME
修改第二等级,GRADE=2并且TS2=NAME并且TS1=PANME
修改第三等级,GRADE=3并且TS3=NAME并且TS2=PANME
要从上到下依次执行,有用到上级的id值。
一开始看不懂所说的
有的name值是相同的,但是上级不同
,看了下sm_dict_grade
表的ID 19和20的数据才明白,NAME可能相同,但PANME不同,对应上一级的ID,所以关联条件中要包含上级关联。如果不确定修改是否正确,建议先查出来,人工比对下,再执行update!
例如: