为什么此查询两次显示相同的结果。
"SELECT * from sony.bsha
inner join sony.frndreq
on sony.frndreq.from='"+email+"' or sony.frndreq.to='"+email+"'";
请告诉我如何停止两次显示数据。
答案 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+"' "
如果您仍然获得双倍结果,请使用DISTINCT
或GROUP 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中指定的所有字段必须相同,而不仅仅是电子邮件。