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) ;
我正在尝试将记录更新为 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) ;