这是我的情景:
我在一张名为notes
. 每个注释都有一个person_id
列来标识注释的对象。
我想检索person_id
表中为每个人写的最后 5 条笔记。
因此,与其检索所有笔记并使用 PHP 为每个人提取最后五个,我可以在一个简单的 MySQL 查询中做到这一点吗?
提前致谢!
更新
有几个人误解了我的问题。我会尝试更好地解释。
假设我的notes
桌子上有 20 个笔记。然后我的people
桌子上有3个人。他们的名字是吉姆、莎莉和兰德尔
在notes
表格中,Jim 有 6 个音符,Sally 有 9 个音符,Randle 有 5 个音符。
我想提取他们所有的笔记,但限制为每人 5 个笔记。所以从 20 个音符中,我想提取其中的 15 个。吉姆 5 分,莎莉 5 分,兰德尔 5 分。
下面的 PHP 和 MySQL 示例是我想要避免的 - 从表中选择所有行。当表达到 1,000,000 行时,需要处理大量数据:
$notes_array = array();
$notes = $db->query("SELECT person_id, notes FROM notes");
foreach($notes AS $note) {
// Create an array for this person's notes
if (!isset($notes_array[$note->person_id]))
$notes_array[$note->person_id] = array();
// If this person has 5 notes, we do not need anymore
if (count($notes_array[$note->person_id]) == 5)
continue;
// Add note to an array
$notes_array[$note->person_id][] = $note->notes;
}