Sql 如果其中一个表在';他要加入吗?
假设我要将Sql 如果其中一个表在';他要加入吗?,sql,postgresql,join,Sql,Postgresql,Join,假设我要将Shoes表连接到cloth表,它们都有一个名为ShoesID的列,因此对我来说,将ShoesID上的这两个表连接起来是有意义的(它也恰好是Shoes表的主键)。但这是我的问题,它不是costs表的主键,因此在costs表中的ShoesID列中,一些行会重复,这会破坏我的连接 有没有办法绕过这个问题 Clothes Table ClothesID ShoesID NakedVarchar 99 |1 | e| 100 |1
Shoes
表连接到cloth
表,它们都有一个名为ShoesID
的列,因此对我来说,将ShoesID
上的这两个表连接起来是有意义的(它也恰好是Shoes
表的主键)。但这是我的问题,它不是costs
表的主键,因此在costs
表中的ShoesID
列中,一些行会重复,这会破坏我的连接
有没有办法绕过这个问题
Clothes Table
ClothesID ShoesID NakedVarchar
99 |1 | e|
100 |1 | f|
101 |4 | g|
102 |4 | d|
I want to join this to this:
Shoes Table
ShoesID Descriptionvarchar
|1 | a|
|2 | b|
|3 | c|
|4 | d|
衣桌
Closesid ShoesID NakedVarchar
99 | 1 | e|
100华氏度|
101 | 4 | g|
102 | 4 | d|
我想把这个和这个结合起来:
鞋桌
ShoesID描述VARCHAR
|1 | a|
|2 | b|
|3 | c|
|4 | d|
所以我认为这样做的逻辑方法是
LEFT JOIN cloth ON Shoes.ShoesID=衣服。ShoesID
不幸的是,因为衣服桌上有重复的衣服,Postgres似乎把它们删掉了,
我想把所有的数据都连接起来,包括重复的数据,我怎样才能解决这个问题呢
这并不像反转我的join语句那么简单,因为从技术上讲,我正试图将它们加入到一个大系统中
具有许多其他联接的查询。您可以创建任何想要的联接,甚至是“自联接”,但如果关键字之间没有重合或匹配,则您的查询可能为空。如果您想列出所有这些,您应该使用联合而不是联接。除了
ShoesID
,您使用什么标准来确定衣服表的哪一行要与鞋表的给定行关联?不确定Postgre是否支持它(我希望它支持)但在SQL Server中,您可以加入一个子查询来消除重复项。好吧,Postgres确实消除了重复项,这部分是我的问题,我希望正确地联接表并将重复项包含在联接中,并且从外观上看,我必须使用ShoesID作为标准。@user519753为什么会出现这个问题?如果在Cloth
表中有多个条目具有相同的ShoeID
join应该返回重复的行。如果需要返回单行,可以引入其他条件。也许应该包括一些示例数据、SQL、看到的结果和期望的结果。