tbl_indicator
grp_nbr, sect_nbr, indicat
001234 100 p
002345 101 s
tbl_group
grp_id, grp_nbr, sect_nbr, indicat
333 001987 100 a
555 001987 100 p
444 002987 101 s
222 02987 101 y
此处(tbl_group
)grp_id
是主键
tbl_order
order_id, grp_id
5000 333
5001 555
5002 555
5003 555
5004 444
5005 444
5006 222
在tbl_order
中,grp_id
是grp_id
中tbl_group
的外键。
在表格tbl_indicator
中,对于一组grp_nbr
和sect_nbr
,indicat
和grp_nbr
同一组sect_nbr
表indicat
中有一个正确的indicat
(555,1,100,p)和一个垃圾tbl_group
(333,1,100,a),但这两个{{1}表grp_id
中存在(333,555)。
另外还有一件事是组表(222,02987,101,y)中的垃圾数据(指示)tbl_orders
的一个字符长度小于{{1}中的grp_nbr
}}。它应该使用'LIKE'运算符
我们如何处理这个?
现在我需要更新grp_nbr
表,以便将垃圾tbl_indicat
替换为正确的tbl_order
s
输出应该如下:
tbl_orders
grp_id
如果grp_id
和order_id, grp_id
5000 555
5001 555
5002 555
5003 555
5004 444
5005 444
5006 444
表格中的列数据相同,我已经回答了...
'博士回答Wily的学徒'
但如果数据不同(如在启动时缺少一些字符串)如何处理?
答案 0 :(得分:0)
UPDATE o
SET o.grp_id = g2.grp_id
FROM tbl_order AS o
INNER JOIN tbl_group AS g1
ON g1.grp_id = o.grp_id
INNER JOIN tbl_group AS g2
ON g2.sect_nbr = g1.sect_nbr
AND g2.grp_nbr = '0' + g1.grp_nbr