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

时间:2012-11-30 09:12:25

标签: mysql row

如何获得具有特定规格的一对行的两个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

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

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

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

2 个答案:

答案 0 :(得分: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上查看。

答案 1 :(得分:0)

您可以从此查询中获取ID

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