php - SELECT WHERE 组 ID IN 数组 ORDER BY 和 Group By

标签 php mysql arrays group-by sql-order-by

我制作了一个消息传递系统,每条消息都有一个唯一的 ID,并有一个类别来保持相关线程的绑定(bind)/链接。我将类别存储在数组中,并且可以使用此 mysql 查询显示每条消息。

$getid = $link->prepare("SELECT * FROM `table` WHERE 
                                               category IN ('$array') 
                                               ORDER BY id DESC");                   
$getid->execute();
while($msg=$getid->fetch()) {

echo "<br />".$msg['id'];
}

上面成功输出了数组中列出的类别 ID 内的每条消息。我试图只显示最近列出的消息,即每个类别中具有最大 ID 的消息。

我尝试按类别分组,但失败了,它给了我不正确的结果。

$getid = $link->prepare("SELECT * FROM `table` WHERE 
                                               category IN ('$array') 
                                               GROUP BY category 
                                               ORDER BY id DESC");                   
$getid->execute();
while($msg=$getid->fetch()) {

echo "<br />".$msg['id'];
}

使用 MAX(id) 也失败

$getid = $link->prepare("SELECT MAX(id) FROM `table` WHERE 
                                               category IN ('$array') 
                                               ORDER BY id DESC");                   
$getid->execute();
while($msg=$getid->fetch()) {

echo "<br />".$msg['id'];
}

我尝试了多种变体,数量太多,无法在此详细说明。我试图仅显示任何给定类别中的最新消息(最后一个 id),最新消息位于顶部。

最佳答案

我认为像这样的子查询就可以做到。

select * from `table` T where T.category in ('$array') and 
  T.id = (select max(id) from `table` where category = T.category) 

关于php - SELECT WHERE 组 ID IN 数组 ORDER BY 和 Group By,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36636469/

相关文章:

php - MAC 的 SMTP 服务器 - 有什么建议吗?

php - PDO 更新语句不起作用

php - 如何在 PHP 中获取完整的引荐来源网址

mysql - MySQL shell 中的回滚在 ALTER TABLE 后不起作用

php - 如何将一个值插入数据库

javascript - 对对象数组进行过滤和映射

ruby - 运行时间 Array#unshift 与 Array#shift

php - 如何将子域合并到 MVC 框架中

c# - Asp.Net 连接表,以便它们可以正确排序 C# LINQ

c++ - 从四个给定的无符号字符数组计算平均数组