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


How can I limit the selection of items with SQL per value?

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

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 个按钮,这并不理想,原因很明显。

目前一切正常,除了我所说的按钮限制。

首先要做的是...您的 ID 列...不应该是自动递增吗?只是检查...

如果你想获取所有的线程,你可能想做一些事情,比如...

Select distinct thread from pms
-- then optionally...
where to-id = '".$_SESSION['id']"' order by ID asc

这样,您将只获得每个线程的第一个实例。