PostgreSQL 中类似的 UPDATE 指令

Similiar UPDATE instruction in PostgreSQL

有没有2列的例子table, (x, y - INTEGER),给出说明:

UPDATE tab SET x = y WHERE x != y;
UPDATE tab SET x = y WHERE 1 = 1 OR (NULL IS NOT NULL);

会显示不同的结果吗?

当然可以:

CREATE TABLE tab (x integer, y integer);
INSERT INTO tab VALUES (NULL, 1);

/* doesn't update a single row */
UPDATE tab SET x = y WHERE x != y;

TABLE tab;

TABLE tab;
   x    │ y 
════════╪═══
 (null) │ 1
(1 row)

/* updates a row */
UPDATE tab SET x = y WHERE 1 = 1 OR (NULL IS NOT NULL);

TABLE tab;

 x │ y 
═══╪═══
 1 │ 1
(1 row)

在第一个语句中,仅当 xy 不是 null 时,x != y 才计算为真。因此,如果 (x,y) 是一个值和一个 null 的任意组合,x 将保持不变。

在第二条语句中,where 条件的计算结果为真,可以完全省略 - 所有 x 值都将更新为相应的 y 值。