执行查询时:
SELECT
follow.fgid,
up.upblog,
up.dataid,
`data`.`name`,
`data`.image,
up.upid,
up.datecreated
FROM follow
INNER JOIN up
ON follow.fgid = up.dataid
INNER JOIN `data`
ON `data`.dataid = follow.fgid
WHERE follow.frid = '$_SESSION[userid]'
OR up.dataid = '$_SESSION[userid]'
我得到了下一个输出:
fgid upblog dataid name upid datecreated
6 postno1 6 himanshu 1 2014=05-29
4 postno5 4 chin 1 2014=05-29
2 postno6 2 hit 1 2014=05-29
1 postno7 1 meet 1 2014=05-29
1 postno7 1 meet 1 2014=05-29
1 postno7 1 meet 1 2014=05-29
1 postno7 1 meet 1 2014=05-29
1 postno7 1 meet 1 2014=05-29
1 postno7 1 meet 1 2014=05-29
4 postno8 4 chin 1 2014=05-29
为什么这会在MySQL中重复记录?
答案 0 :(得分:1)
如果您只想从查询中获取不同的值,则需要将SELECT
替换为SELECT DISTINCT
问题因为它们重复,取决于表格中的数据以及join
和where
条件。
答案 1 :(得分:0)
您可以通过dataid(在下表中调用fgid)来连接表。我想这是数据表的主键。但它在表格中并不是独一无二的。因此,假设您有三个条目用于跟随数据ID 1,两个用于总共六个条目(三个两个)。
使用以下命令查看表中的记录:
SELECT * from follow where fgid = 1;
和
SELECT * from up where dataid = 1;
这为您提供了在结果中看到重复记录的原因。然后想想你想要看什么。也许只是在结果中显示一个额外的字段,这样您的记录就不再重复了?或者你想看到所有的组合,但每个组合只有一次?然后使用DISTINCT。或者您想在结果中查看最大日期和最小upblog等?然后按dataid分组,并根据您的意愿汇总所有其他列。