繁体   English   中英

PHP / SQL:每个dialog_id选择一个

[英]PHP/SQL: Select one per dialog_id

好的,在我的PM收入列表中,我有以下内容:

$queryIn = "SELECT * FROM users_pm_in WHERE uID = '$USER' ";

接受所有查询并显示它们。 现在,每次用户创建PM时,他都会创建一个“ dialog_id”编号。 如果收件人响应用户的PM,则收件人的PM在dialog_id中也将具有该号码。

因此,这就是为什么我只想在每个dialog_id中显示1个收入项。 在users_pm_in中的外观:

id | uID | bID | msg | dialog_id
--------------------------------
 1 | 1 | 2 | Hello | 1
 2 | 2 | 1 | Hi? | 1
 3 | 1 | 2 | Wazzaa? | 1

uID是接收消息的人,bID是发送消息的用户,msg是消息,dialog_id显示他们在同一个对话框中编写的内容完全相同(彼此响应)。

因此,如果我的ID为1,那么在我的收入列表中,我现在将有2个条目,带有上面的查询。

我想要的只有1个,如果它是相同的对话框(dialog_id和相同的bID)

并且显示的1应该是按日期desc排序的一个顺序

SELECT * FROM users_pm_in WHERE uID = '$USER' GROUP BY dialog_id ORDER BY id DESC

我认为问题在于您不能保证MySQL在GROUP BY语句之后将返回哪一行-您希望它返回具有“最高”(即最新)日期的行,但此刻可能未必一定退还。 因此:

SELECT *, MAX(date) FROM users_pm_in WHERE uID = '$USER' GROUP BY dialog_id ORDER BY date DESC

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM