用于更新主表的复杂sql查询
我有三张桌子 1) 主表 2) 旗子桌 3) emp_旗杆详情 主表结构 emp_no hod_no emp_name flgType E51397 E44417 Asha V E42342 E44417 Shaikh Faiz Ahmed E06636 E44417 Balu K U emp_无hod_无emp_名称flgType E51397 E44417阿沙五世 E42342 E44417谢赫·法伊兹·艾哈迈德 E06636 E44417巴鲁K U 在上表中,我将flgtype列保留为空,以便稍后更新 现在我有如下的Flag_表结构 FlagId FlagCategory FlagType 1 BM BRML12B 2 BM BRMM12B 3 BM BRMRMB 4 BM BRMCMB 5 BM BRMZM 6 VH BRML12V 7 VH BRMM12V 8 VH BRMRMV 9 VH BRMCMV emp_no hod_no emp_name flgType E51397 E44417 Asha V BM E42342 E44417 Shaikh Faiz Ahmed BM E06636 E44417 Balu K U BM FlagId FlagCategory FlagType 1 BM BRML12B 2 BM BRMM12B 3 BM BRMRMB 4 BM BRMCMB 5 BM BRMZM 6 VH BRML12V 7 VH BRMM12V 8 VH BRMRMV 9 VH BRMCMV emp_flagdetails结构如下 ecode flag E44417 BRML12B E42342 BRMRMB E06636 BRMZM E51397 BRML12B ecode旗 E44417 BRML12B E42342 BRMRMB E06636 BRMZM E51397 BRML12B 这是我的桌子结构,现在我的查询是,我想用Flag_表的flagcategory列更新main_表的flgtype column。这样,如果emp_flagdetails表中存在来自main_表的empno,那么我们将检查匹配员工的emp_flagdetails的Flag列,然后我们得到这个Flag列值,如果它存在于flag_表中,我们将用flagcategory列值更新main_表flgtype列…因此输出如下 FlagId FlagCategory FlagType 1 BM BRML12B 2 BM BRMM12B 3 BM BRMRMB 4 BM BRMCMB 5 BM BRMZM 6 VH BRML12V 7 VH BRMM12V 8 VH BRMRMV 9 VH BRMCMV emp_no hod_no emp_name flgType E51397 E44417 Asha V BM E42342 E44417 Shaikh Faiz Ahmed BM E06636 E44417 Balu K U BM emp_无hod_无emp_名称flgType E51397 E44417 Asha V BM E42342 E4417谢赫·法伊兹·艾哈迈德BM E06636 E44417巴鲁克BM 请帮助我编写查询查询:用于更新主表的复杂sql查询,sql,sql-server,join,sql-update,jointable,Sql,Sql Server,Join,Sql Update,Jointable,我有三张桌子 1) 主表 2) 旗子桌 3) emp_旗杆详情 主表结构 emp_no hod_no emp_name flgType E51397 E44417 Asha V E42342 E44417 Shaikh Faiz Ahmed E06636 E44417 Balu K U emp_无hod_无emp_名称flgType E51397 E44417阿沙五世 E42342 E44417谢赫·法伊兹·艾哈迈德 E06636 E444
update main_table m, (select a.emp_no, b.flagcategory from emp_flagdetails a, flag_table b
where a.flag = b.flagtype) s set m.flgtype = s.flagcategory where m.emp_no = s.emp_no
UPDATE m
SET m.flgType = f.FlagCategory
FROM main_table m
JOIN emp_flagdetails fd
ON fd.ecode = m.emp_no
JOIN flag_table f
ON f.FlagType = fd.flag;