[英]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.