这是我的晚会:
我在一张名为notes
的表格中写了关于人物的笔记。每个记事都有一个person_id
列,用于标识该记事的用户。
我想检索为表格中的每个person_id
编写的最后5个注释。
因此,我可以在一个简单的MySQL查询中执行此操作,而不是检索所有笔记并使用PHP来提取每个人的最后五个笔记吗?
提前致谢!
更新
有些人误解了我的问题。我会尝试更好地解释。
假设我的notes
表中有20个音符。然后我在people
表中有3个人。他们的名字是Jim,Sally和Randle
在notes
表中,Jim有6个音符,Sally有9个音符,Randle有5个音符。
我想提取所有笔记,但每人限制为5个笔记。因此,在20个音符中,我想提取其中的15个音符。 Jim为5,Sally为5,Randle为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;
}
答案 0 :(得分:3)
select a.*
from NOTES a
where
(
select count(*)
from NOTES as b
where b.Person_ID = a.Person_ID and b.AutoNumber >= a.AutoNumber
) <= 5
将AUTONUMBER
更改为自动递增字段或日期时间字段taht可以指示记录的年龄。