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。这是相同的想法,但表名颠倒了。是的,这在删除多余的表名后有效;在
行的
上。否则将生成语法错误。