SQL更新组中具有最小值的列

  • 本文关键字:最小值 更新 SQL sql oracle
  • 更新时间 :
  • 英文 :


我正在尝试更新DESC组中最小值的MD_ID列。
例如,我希望所有的行desc =语言使md_id = 21作为min(21,163,287)= 21。为了简化,它始终是与源=1。

关联的md_id

数据看起来像这样:

MD_ID|SOURCE|DESC           |MSG |SEGMNT|FIELD
  21 |1     |Language       |A11 |PID   |33
 163 |2     |Language       |A11 |PID   |33
 287 |3     |Language       |A11 |PID   |33
  22 |1     |Sex            |B22 |MSH   |8
 145 |2     |Sex            |B22 |MSH   |8
 171 |3     |Sex            |B22 |MSH   |8
  23 |1     |Marital Status |C33 |NK1   |16
 145 |2     |Marital Status |C33 |NK1   |16
 289 |3     |Marital Status |C33 |NK1   |1
  24 |1     |Religion       |D44 |GT1   |7
 167 |2     |Religion       |D44 |GT1   |7
 292 |3     |Religion       |D44 |GT1   |7

我需要看起来像这样:

MD_ID|SOURCE|DESC           |MSG |SEGMNT|FIELD
  21 |1     |Language       |A11 |PID   |33
  21 |2     |Language       |A11 |PID   |33
  21 |3     |Language       |A11 |PID   |33
  22 |1     |Sex            |B22 |MSH   |8
  22 |2     |Sex            |B22 |MSH   |8
  22 |3     |Sex            |B22 |MSH   |8
  23 |1     |Marital Status |C33 |NK1   |16
  23 |2     |Marital Status |C33 |NK1   |16
  23 |3     |Marital Status |C33 |NK1   |1
  24 |1     |Religion       |D44 |GT1   |7
  24 |2     |Religion       |D44 |GT1   |7
  24 |3     |Religion       |D44 |GT1   |7
UPDATE YourTable t
    SET MD_ID = (SELECT MD_ID
                     FROM YourTable t2
                     WHERE t2.DESC = t.DESC
                         AND t2.SOURCE = 1)

最新更新