Postgresql 为什么当我执行“选择*”时,我的左连接起作用,但当我只选择必要的列时失败?

Postgresql 为什么当我执行“选择*”时,我的左连接起作用,但当我只选择必要的列时失败?,postgresql,Postgresql,我是SQL新手,但我正在尝试连接两个表。然而,它并没有像我预期的那样工作。这是在Postgresql中 这是我想加入的表格 我的桌子 我的JOIN语句 尝试1有效 尝试2不起作用 两者之间的唯一区别是我没有在尝试2中选择图片。但第二次尝试似乎根本没有加入。相反,它显示 id | name | address ----+----------------+------------- 1 | Tuscany | 440 S 2nd W 2 | Mount

我是SQL新手,但我正在尝试连接两个表。然而,它并没有像我预期的那样工作。这是在Postgresql中

这是我想加入的表格

我的桌子 我的JOIN语句 尝试1有效

尝试2不起作用

两者之间的唯一区别是我没有在尝试2中选择图片。但第二次尝试似乎根本没有加入。相反,它显示

 id |      name      |   address
----+----------------+-------------
  1 | Tuscany        | 440 S 2nd W
  2 | Mountain Lofts | 538 S 2nd W
这意味着它无法加入,而只是显示houses表

我的问题 我不明白为什么在第二个表中联接失败,因为我只删除了任意一列图片

是否有一种方法可以将两个表连接在一起,但也可以从houses表中排除pictures列


谢谢大家!

您只能看到来自房屋的数据,因为这是您选择的全部内容。试试这个:

挑选 h、 身份证,姓名,地址, r、 平均得分 从h房子 左连接 选择房屋id、truncavgscore、1平均分数 来自house_评论 按房屋编号分组 AS r ON house.id=r.house\u id;

您只能看到来自房屋的数据,因为这是您选择的全部内容。试试这个:

挑选 h、 身份证,姓名,地址, r、 平均得分 从h房子 左连接 选择房屋id、truncavgscore、1平均分数 来自house_评论 按房屋编号分组 AS r ON house.id=r.house\u id;

当然可以。我想我只是误解了select查询是如何工作的。我想我只是误解了select查询是如何工作的。
SELECT * FROM houses
LEFT JOIN (SELECT house_id, trunc(avg(score), 1) FROM house_reviews GROUP BY house_id) AS r
ON houses.id = r.house_id;
SELECT id, name, address FROM houses
LEFT JOIN (SELECT house_id, trunc(avg(score), 1) FROM house_reviews GROUP BY house_id) AS r
ON houses.id = r.house_id;
 id |      name      |   address
----+----------------+-------------
  1 | Tuscany        | 440 S 2nd W
  2 | Mountain Lofts | 538 S 2nd W