更新行对中的一行,其中两行一起满足特定条件

问题描述 投票:0回答:2

如何获得具有特定规格的两对行的ID?

更加具体:

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

我想更新具有相同日期的行的spec3,并且没有行具有spec1的值。

在这个例子的情况下:我想更新第1行和第2行 - >相同的日期,没有spec1的值

我不想更新第3行和第4行 - >相同日期但第4行有spec1的值

mysql row
2个回答
0
投票

你可以从这个查询中获取id

从tbl a,tbl b中选择a.id id,其中a.spec2 = b.spec2和isnull(a.spec1)和isnull(b.spec1)和a.id!= b.id;


0
投票
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上看到它。

© www.soinside.com 2019 - 2024. All rights reserved.