gpt4 book ai didi

php - 嵌套 SQL 查询,按分组并为每个组返回有限的行

转载 作者:行者123 更新时间:2023-11-29 13:04:41 25 4
gpt4 key购买 nike

尝试获得正确的查询来查看我的表格,如下所示:

id    fromName    toName    messages
1 user1 me .......
2 user2 me .......
3 user1 me .......
4 user1 me .......
5 user3 me .......
6 user2 me .......

我想要做的是获取一个数组,其中包含来自数组中的用户1、数组中的用户2、数组中的用户3...等的所有消息。我有一个查询可以做到这一点:

$query = mysqli_query($link, "SELECT * FROM messages WHERE toName='$to' OR fromName='$to' order by id desc");
$messages = array();
while ($row = mysqli_fetch_assoc($query)) {
$messages[$row['fromName']][] = $row;
}

现在我想限制它返回的行数...例如,所有用户的行数限制为 2 行。我需要使用“group by”进行嵌套查询吗?此查询不起作用:

$query = mysqli_query($link, "SELECT * FROM messages WHERE toName='$to' OR fromName='$to' group by fromName order by id desc limit 2");
//or this one
$query = mysqli_query($link, "SELECT * FROM messages WHERE toName='$to' OR fromName='$to' AND id IN(SELECT * FROM messages group by fromName)");
$messages = array();
while ($row = mysqli_fetch_assoc($query)) {
$messages[$row['fromName']][] = $row;
}

希望这不是太难解决......提前致谢!

最佳答案

为什么不使用原始查询并在分配另一个之前对数组运行计数。

if(count($messages[$row['fromName']]) < 2)
$messages[$row['fromName']][] = $row;
}

关于php - 嵌套 SQL 查询,按分组并为每个组返回有限的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22887587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com