t-sql更新问题
tbl\U指标t-sql更新问题,sql,sql-server,sql-server-2005,tsql,Sql,Sql Server,Sql Server 2005,Tsql,tbl\U指标 grp_nbr, sect_nbr, indicat 001234 100 p 002345 101 s order_id, grp_id 5000 333 5001 555 5002 555 5003 555 5004 444 5005 444 5006
grp_nbr, sect_nbr, indicat
001234 100 p
002345 101 s
order_id, grp_id
5000 333
5001 555
5002 555
5003 555
5004 444
5005 444
5006 222
tbl_集团
grp_id, grp_nbr, sect_nbr, indicat
333 001987 100 a
555 001987 100 p
444 002987 101 s
222 02987 101 y
此处(在tbl_组中)grp_id
是主键
待定订单
grp_nbr, sect_nbr, indicat
001234 100 p
002345 101 s
order_id, grp_id
5000 333
5001 555
5002 555
5003 555
5004 444
5005 444
5006 222
在tbl\u顺序中,grp\u id
是tbl\u组中grp\u id
的外键
在表tbl\u指示器
中,对于一组grp\u nbr
和sect\u nbr
有一个标记
,对于同一组grp\u nbr
和sect\u nbr
而言,表tbl\u组中有一个正确的标记
(555,1100,p)和一个垃圾标记
(333,100,a),但这两个grp_id
(333555)都存在于表tbl_订单中
这里还有一件事是grp\u nbr
组表(22202987101,y)中的垃圾数据(indicat)比tbl\u indicat
中的grp\u nbr
少一个字符长度。它应该使用“LIKE”操作符
我们如何处理这个问题
现在我需要更新tbl\u order
表,这样垃圾grp\u id
s应该被正确的grp\u id
s替换
输出应该是:
tbl\U订单
order_id, grp_id
5000 555
5001 555
5002 555
5003 555
5004 444
5005 444
5006 444
如果tbl_indicat
和tbl_grp
表中的列数据相同,我已经有了答案
答案是“威利博士的徒弟”
但是如何处理数据是否不同(比如在开始时缺少一些字符串)?欢迎使用StackOverflow:如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮({}
),以很好地格式化和语法突出显示它!如果将列强制转换为数字并进行数字比较,则可以忽略前导零。如何确定哪些是“垃圾”记录?我无法将其转换为数字b/c。我的一些数据包含字符,如果我在tbl_组和tbl_指示符表中找不到grp_nbr和sect_nbr对应组的指示符值,则该rec在tbl_组表中是垃圾rec。另外,请避免在标题中添加(帮助我),尽量使标题与你的问题更相关。