【问题标题】:t-sql update issuet-sql 更新问题
【发布时间】:2012-02-25 09:20:59
【问题描述】:

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_groupgrp_id 是主键

tbl_order

order_id,       grp_id
5000            333
5001            555
5002            555
5003            555
5004            444
5005            444
5006            222

tbl_order 中,grp_idtbl_groupgrp_id 的外键。

在表tbl_indicator 中,对于一组grp_nbrsect_nbr 有一个indicat,对于同一组grp_nbrsect_nbr 有一个正确的indicat (555,1 , 100, p) 和一个垃圾 indicat (333, 1, 100, a) 在表 tbl_group 中,但是这两个 grp_id (333, 555) 都存在于表 tbl_orders 中。

这里还有一件事是组表(222、02987、101、y)中的垃圾数据(指示)grp_nbrtbl_indicat 中的grp_nbr 少一个字符长度。它应该使用“LIKE”运算符

我们该如何处理?

现在我需要更新tbl_order 表,以便将垃圾grp_id s 替换为正确的grp_id s

输出应该是这样的:

tbl_orders

order_id,       grp_id
5000              555
5001              555
5002              555
5003              555
5004              444
5005              444
5006              444

如果tbl_indicattbl_grp 表中的列数据相同,我已经有了答案...

“博士”回答了这个问题。威利的学徒”

sql update (help me )

但是如果数据不同(比如在开始时缺少一些字符串)如何处理?

【问题讨论】:

  • 欢迎来到 StackOverflow:如果您发布代码、XML 或数据示例,在文本编辑器中突出显示这些行并单击“代码示例”按钮 ({ } ) 在编辑器工具栏上很好地格式化和语法突出显示它!
  • 如果将列转换为数字并进行数字比较,则可以忽略前导零。您如何确定哪些是“垃圾”记录?
  • 我无法将其转换为数字 b/c 我的某些数据包含字符
  • 如果我在 tbl_group 和 tbl_indicator 表中找不到相应的 grp_nbr 和 sect_nbr 集的指示值,那么该 rec 是 tbl_group 表中的垃圾记录
  • 另外,请避免在标题中添加(帮助我),并尝试使标题与您的问题更相关。

标签: sql sql-server sql-server-2005 tsql


【解决方案1】:
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

【讨论】:

    猜你喜欢
    • 2016-03-15
    • 1970-01-01
    • 2016-04-02
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多