更新行对,其中两行一起符合特定条件的一排(Update one row of a row pair,

2019-11-01 05:59发布

如何获得对行的某些规格的两个IDS?

更加具体:

id - spec1 - spec2 - spec 3
1    null    30 nov  34
2    null    30 nov  34
3    null     1 dec  35
4    75       1 dec  35

我想更新具有相同的日期;如没有行有SPEC1值行SPEC3。

在这个例子中:我想更新行1和2 - >同日,为SPEC1没有值

我不想更新行3和4 - >同一日期,但第4行有SPEC1值

Answer 1:

你可以从这个查询得到的ID(S)

选择从TBL一个,TBL b其中a.spec2 = b.spec2和ISNULL(a.spec1)和ISNULL(b.spec1)和A.ID = b.id a.id ID!;



Answer 2:

UPDATE my_table t1
  JOIN my_table t2
    ON t1.spec1 IS NULL
   AND t2.spec1 IS NULL
   AND t1.spec2 = t2.spec2
   AND t1.id    < t2.id
SET    t1.spec3 = 123,
       t2.spec3 = 456

看到它在sqlfiddle 。



文章来源: Update one row of a row pair, where both rows together meet certain criteria
标签: mysql row