PostgreSQL 更新未正确更新

PostgreSQL Update does not updated properly

我正在尝试将记录更新为 Number 列中的值,但它会将 Number 列中的所有行更新为与另一个 table.

中第一个匹配 ID 匹配的值
  UPDATE public.table
            SET number = s.number,
                updatedt =  now()                
            -- select a.* , s.number
            FROM public.Department AS a
            INNER JOIN public.Department_stg AS s
                ON a.id = s.id 
                 AND a.number <> s.number;
                --AND COALESCE (a.number, 1) = COALESCE (s.number, 1) ; 
                --AND COALESCE (CAST (a.number AS VARCHAR(20) ),'') <> COALESCE (CAST (s.numberAS VARCHAR(20) ),'') ; 
                

您忘记了使用 FROM 子句中的内部联接加入 "table"WHERE 条件;也许

WHERE "table".id = a.id

如果没有这样的条件,"table".number 将更新为内部联接中的任何行。

不像 postgre 中的 T-SQLSQL JOIN 不需要更新。我们可以只在 From 子句中传递源值 table,并在 UPDATE 子句中保持要更新的 table。

UPDATE public.table AS a
SET number= s.number,
    updatedt =  now() 
FROM public.Department_stg AS s
WHERE a.id = s.id
AND COALESCE (a.number, 1) <> COALESCE (s.number, 1) ;