如何使用SQL每个值限制项目的选择?

时间:2013-10-20 18:20:05

标签: php sql greatest-n-per-group

好的,所以我有这个我正在研究的私人消息系统,这里有点组织方式

ID From-ID To-ID Message Thread
1 0 1 "blah blah blah" 1
2 0 1 "blah blah blah, blah!" 1
3 0 3 "hey <3>, how are you? Signed, <0>" 2

这样的方式是你可以在一个帖子中有多条消息,所以你可以回复。

然后在我的私人消息页面的左侧,您可以选择要查看的线程。

因此,它将是一个显示发件人姓名的按钮,因此我使用了这个SQL:

mysql_query("SELECT * FROM pms WHERE to-id='".$_SESSION['id']."' ORDER BY id ASC");

但是,我希望它类似于(伪代码)

mysql_query("SELECT * FROM pms WHERE to-id='".$_SESSION['id']."' LIMIT 1 per `thread` ORDER BY id ASC");

这样它只会显示一个指向某个帖子的链接。

现在发生的事情是,每次有线程回复时,它都会显示一个新按钮。所以,如果有100个回复消息,并且它们都在同一个帖子中(因为它们是“回复”),那么将有101个按钮,这是不理想的,原因显而易见。

除了我正在谈论的那个按钮限制外,一切当前都在工作。

1 个答案:

答案 0 :(得分:1)

首先要做的事情......你的ID栏......不应该是自动递增吗?只是检查......

如果你想获得所有线程,你可能想要做一些像......

Select distinct thread from pms

-- then optionally...
where to-id = '".$_SESSION['id']"' order by ID asc

这样,你就可以得到每个线程的第一个实例。