【发布时间】:2012-02-22 13:05:41
【问题描述】:
假设我将Shoes 表加入Clothes 表,它们都有一个名为ShoesID 的列,所以对我来说,在ShoesID 上加入这两个表是有意义的(它也恰好是Shoes 表的主键)。但这是我的问题,它不是Clothes 表的主键,所以在Clothes 表中,在ShoesID 列中,一些行会重复,这会破坏我的连接。
有没有办法解决这个问题?
衣服桌 衣服ID鞋ID NakedVarchar 99 |1 |电子| 100 |1 | f| 101 |4 |克| 102 |4 | d| 我想加入这个: 鞋桌 鞋子ID 说明varchar |1 |一个| |2 |乙| |3 | c| |4 | d|所以我认为这样做的合乎逻辑的方法是这样做
LEFT JOIN Clothes ON Shoes.ShoesID = Clothes.ShoesID
不幸的是,由于 Clothes 表包含重复项,因此 Postgres 似乎将它们删除了, 我想加入所有数据,包括重复数据,我该如何解决这个问题?
这不像逆转我的加入声明那么简单,因为我在技术上试图将它们加入一个大 有许多其他联接的查询。
【问题讨论】:
-
除了
ShoesID之外,您还使用什么标准来确定将 Clothes 表的哪一行关联到 Shoes 表的给定行? -
不确定 Postgre 是否支持它(我希望它支持),但在 SQL Server 中,您可以加入一个消除欺骗的子查询。
-
好吧,Postgres 确实消除了欺骗,这部分是我的问题,我希望正确连接表格并将欺骗包含在连接中,我必须使用 ShoesID 作为标准看起来。
-
@user519753 为什么这是个问题?如果
Clothes表中有多个具有相同ShoeID的条目,则连接应该返回重复的行。如果您有获得单行的条件,您可以引入其他条件。 -
也许您应该包括一些示例数据、您的 SQL、您看到的结果以及您期望的结果。
标签: sql postgresql join