在我的INNER JOIN sql查询中获取重复输出

时间:2017-10-10 17:20:04

标签: mysql sql inner-join

我是SQL新手,我正在学习内部联接。但是,当我运行查询时,我收到的输出数量超出了我的预期。

SELECT          pfr.pno AS 'Property Number', 
                    pfr.street, 
                    pfr.rooms, 
                    pfr.rent, 
                    CONCAT(o.fname, ' ', o.lname) AS 'Owner Name', 
                    CONCAT(s.fname,' ',s.lname) AS 'Staff Name', 
                    v.date, 
                    v.comment
From                property_for_rent AS pfr
INNER JOIN  owner AS o
ON                  pfr.ono = o.ono
INNER JOIN  staff AS s
ON                  pfr.sno = s.sno
INNER JOIN  viewing AS v
ON                  pfr.pno = v.pno
WHERE           pfr.pno = 'PG4';

我附上了输出的截图。我希望这是足够的信息!

Query Output Image

Table in use Image

2 个答案:

答案 0 :(得分:1)

当你加入两张牌桌时,如果你没有1:1的关系,就会发生这种情况。

例如,您在"查看"中有两条记录。 table,所以即使只有一个属性,也必须显示两行。

如果想要单个属性结果,则需要在逻辑上聚合查看表,例如通过获取属性的最新查看。

答案 1 :(得分:0)

我不会考虑这些重复的行。如果您查看PG4交易的日期列,您会注意到日期不同。这是两个不同的交易,不被视为重复。如果您只想返回特定列的一条记录,可以考虑使用Distinct子句。希望这可以帮助!