sql语句更新复杂where语句中多行中的多个值

时间:2018-07-26 19:33:32

标签: sql postgresql

假设我在表X中有6列名为a,b,c,d,e,f

我的逻辑是这样:

UINavigationControllerDelegate

如何在一个查询语句中构建它

数据库是PostgreSQL

我需要大约1万条记录进行更新

2 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

update x
  set d = t.d, 
      e = t.e,
      f = t.f
from (
  values 
    (0,0,0,0,0,0),
    (0,0,1,0,0,1),
    (0,0,2,0,0,8),
    (1,0,2,0,555,8)
) as t(a,b,c,d,e,f)
where x.a = t.a
  and x.b = t.b
  and x.c = t.c
;

在线示例:http://rextester.com/APBVYG17890

答案 1 :(得分:0)

我个人建议采用完全不同的方法。如果您创建了一个表,可以对这些值进行交叉检查,那么它将可以重复使用,简洁并且易于维护。

示例:

CREATE TABLE t (
        a INT
    ,   b INT
    ,   c INT
    ,   d INT
    ,   e INT
    ,   f INT
)

INSERT INTO t (a,b,c,d,e,f) VALUES (0,0,0,0,0,0);
INSERT INTO t (a,b,c,d,e,f) VALUES (0,0,1,0,0,1);
INSERT INTO t (a,b,c,d,e,f) VALUES (0,0,2,0,0,8);
INSERT INTO t (a,b,c,d,e,f) VALUES (1,0,2,0,555,8);

SELECT * FROM t

您可以简单地将这三个值加入该表,并获得想要的d,e和f值。