首页 > 解决方案 > postgresql 左连接不起作用

问题描述

我想将表 B 的所有列添加到表 A 中,基于公共列(数字类型)进行连接。我正在尝试使用 LEFT JOIN 来完成,但添加的列都是空白的。这是不可能的,因为表 b 存储了相同的 ID 值等。我哪里错了?

Select * from "2017_01" left join "Registry_2017" on '2017_01.ID' = 'Registry_2017.ID';

标签: postgresqlleft-join

解决方案


你做错了..我不知道为什么你可以使用正确的Table呼叫"2017_01"和不同的'2017_01.ID'..

'= 单引号标识为String

"= 双引号标识为Table or Column转义命名

Select 
  * 
From 
  "2017_01" 
  left join "Registry_2017" on '2017_01.ID' = 'Registry_2017.ID';

所以当你这样做'2017_01.ID' = 'Registry_2017.ID'的时候,条件总是会变成false因为那两个不同String的不相等。Postgresql看起来条件不是Table and Column因为String你正在使用Single quote

Select 
  * 
from 
  "2017_01" 
   left join "Registry_2017" on "2017_01"."ID" = "Registry_2017"."ID";

所以查询应该是这样的..即使你已经得到了答案并且它得到了工作我必须告诉这个..


推荐阅读