如何获得具有特定规格的两对行的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的值
你可以从这个查询中获取id
从tbl a,tbl b中选择a.id id,其中a.spec2 = b.spec2和isnull(a.spec1)和isnull(b.spec1)和a.id!= b.id;
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上看到它。