Mysql 在我的内部联接sql查询中获取重复输出

Mysql 在我的内部联接sql查询中获取重复输出,mysql,sql,inner-join,Mysql,Sql,Inner Join,我是SQL新手,正在学习内部连接。然而,当我运行我的查询时,我收到的输出比我应该得到的多 SELECT pfr.pno AS 'Property Number', pfr.street, pfr.rooms, pfr.rent, CONCAT(o.fname, ' ', o.lname) AS 'Owner Na

我是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';
我附上了我的输出截图。我希望这是足够的信息


当您连接两个表时,如果没有1:1的关系,则会发生这种情况

例如,“查看”表中有两条记录,因此即使只有一个属性,也必须显示两行


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

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

你的复制品不是复制品。您在查看中有2行与该pfr编号匹配(我假设这意味着该属性已被查看2次)。一个在五月份没有评论,另一个在四月份的某个时候有“太遥远”的评论。很明显,你在这些表格上有一对多的关系。我认为它的行为是正确的。这只是要处理重复数据的逻辑问题。显示该ID的查看表数据。只要列之间存在匹配,INTERNAR JOIN关键字将选择两个表中的所有行。我现在看到,查看表有两个属性视图。谢谢