Sql 错误:无法匹配整型和布尔型大小写类型
我在尝试执行Sql 错误:无法匹配整型和布尔型大小写类型,sql,postgresql,sql-update,Sql,Postgresql,Sql Update,我在尝试执行update查询时遇到上述错误。请参见下面的模式以获取参考。 查询的目标是更新客户机表的资本行,使其与compte表的solde行(如果客户机有compte)相同。如果没有,则资本价值必须为0。我尝试了下面的查询,出现了标题中提到的错误消息 UPDATE client SET capital = ( SELECT CASE WHEN client_compte.compte_num IS NOT NULL THEN client.capital =
update
查询时遇到上述错误。请参见下面的模式以获取参考。
查询的目标是更新客户机表的资本行,使其与compte表的solde行(如果客户机有compte)相同。如果没有,则资本价值必须为0。我尝试了下面的查询,出现了标题中提到的错误消息
UPDATE client
SET capital = (
SELECT
CASE
WHEN client_compte.compte_num IS NOT NULL THEN client.capital = compte.solde
ELSE 0
END
FROM compte
JOIN client_compte ON compte.compte_num = client_compte.compte_num
JOIN client ON client_compte.client_id = client.client_id);
Any help solving this error?
消息似乎很清楚——列的类型不匹配。但是,您的
更新
格式不正确,因为有两个对客户端的引用。你大概打算:
UPDATE client cl
SET capital = (CASE WHEN cc.compte_num IS NOT NULL
THEN cc.solde
ELSE 0
END)
FROM client_compte cc JOIN
compe c
ON c.compte_num = cc.compte_num;
WHERE cc.client_id = cl.client_id;
这修复了错误,但并不是您想要的。我认为关联子查询更好:
UPDATE client cl
SET capital = COALESCE((SELECT cc.solde
FROM client_compte cc JOIN
compte c
ON c.compte_num = cc.compte_num
WHERE cc.client_id = cl.client_id
), 0
);
我已经更正了SQL查询的第一行。我需要更新client
表,而不是compte
表。此外,我们还没有学习到coalesce
参数。没有coalesce
参数,有没有办法做到这一点?@SkippyDingleChalk。这是相同的想法,但表名颠倒了。是的,这在删除多余的表名后有效;在
行的上。否则将生成语法错误。