mysql:连接或条件显示结果两次

时间:2013-10-02 12:24:57

标签: mysql sql database

为什么此查询两次显示相同的结果。

"SELECT * from sony.bsha 
inner join sony.frndreq 
on sony.frndreq.from='"+email+"' or sony.frndreq.to='"+email+"'";

请告诉我如何停止两次显示数据。

4 个答案:

答案 0 :(得分:1)

您应该在一些公共字段上加入表格,然后使用WHERE子句:

SELECT * 
FROM sony.bsha 
INNER JOIN sony.frndreq 
ON sony.bsha.someField = sony.frndreq.someField
WHERE sony.frndreq.from='"+email+"' OR sony.frndreq.to='"+email+"' "

如果您仍然获得双倍结果,请使用DISTINCTGROUP BY。很难说没有给出任何更多的数据库架构等。

答案 1 :(得分:0)

使用GROUP BY

"SELECT * 
 from sony.bsha 
      inner join sony.frndreq 
          on sony.frndreq.from='"+email+"' or sony.frndreq.to='"+email+"'
GROUP BY sony.frndreq.from
    ";

答案 2 :(得分:0)

您必须在两个表之间的公共字段上指定条件。然后只有你会获得独特的记录。

"SELECT * FROM sony.bsha 
INNER JOIN sony.frndreq ON sony.bsha.id = sony.frndreq.bid 
WHERE sony.frndreq.from='"+email+"' OR sony.frndreq.to='"+email+"'";

在上面的SQL中,我假设了

的字段
sony.bsha.id = sony.frndreq.bid

sony.bsha.id Primary Key Left Table sony.frndreq.bid Foriegn Key Right Table {{1}} {{1}}为{{1}}的情况。

答案 3 :(得分:0)

请注意,即使您使用内部联接,如果存在冗余数据,它仍将返回多个“相同”记录。也许如果你检查“电子邮件”,你可能会发现一个以上的值出现重复的值。使用您获得的重复记录中的值运行查询,并查看您获得的内容。

如果电子邮件有重复值(并且没有错误),请按照其他用户的说法进行操作并使用DISTINCT或GROUP BY。请记住,对于那些工作的人来说,您在select中指定的所有字段必须相同,而不仅仅是电子邮件。