SQL多次选择相同的条目

时间:2011-06-03 15:14:55

标签: sql

  SELECT p.*
    FROM StatusUpdates p
    JOIN FriendRequests fr
      ON (fr.From = p.AuthorId OR fr.To = p.AuthorId)
   WHERE fr.To = ".$Id." OR fr.From = ".$Id." 
     AND fr.Accepted = 1
ORDER BY p.DatePosted DESC

我正在使用这个SQL代码,而somone在另一个问题上为我写的那一刻。我正在使用PHP,但这不应该有太大的区别,因为我正在做的唯一事情是将变量连接到它。

它的意图是通过你所有的朋友,获得他们所有的状态帖子,并订购它们。它工作正常,但它根本不会选择“$ Id”的帖子,或者你拥有的朋友数量

例如,如果您有5个朋友,它会选择我们的帖子5次。我只希望它能做到这一次。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

GROUP BY p.idSELECT DISTINCT p.id, p.*

答案 1 :(得分:1)

如果您想显示帖子ID,无论朋友数量多少,您都需要使用LEFT JOIN而不是加入。并GROUP BY p.id以便不会多次显示相同的帖子:

SELECT p.*
FROM StatusUpdates p
LEFT JOIN FriendRequests fr
  ON ((fr.From = p.AuthorId OR fr.To = p.AuthorId) AND fr.Accepted = 1)
 WHERE p.AuthorId = ".$Id."

GROUP BY p.id
ORDER BY p.DatePosted DESC