我正在尝试从表中选择一组随机结果(5个结果)而不从同一个用户中选择两个音符,并根据添加的日期对这些结果进行排序并在30天内添加记录。例如,假设我的表格包含以下列:
user_notes
-note_id
-user_id
-note
-note_added
我非常接近
SELECT * FROM
(
SELECT * FROM user_notes
WHERE note_added > date_sub(note_added,interval 30 day)
GROUP BY user_id
ORDER BY RAND()
) user_notes
ORDER BY note_added DESC LIMIT 0,5
我觉得group by声明正在搞砸事情,而用户可能在过去30天内添加了一条记录,我刚刚获得他们创建的第一条记录,因为该组已经过了。有什么建议吗?
答案 0 :(得分:1)
我无法测试它,但对我来说它看起来很好,除了date_sub()
:不应该是
date_sub(now(),interval 30 day)?
答案 1 :(得分:0)
SELECT * FROM
(
SELECT * FROM user_notes
WHERE note_added > date_sub(note_added,interval 30 day)
ORDER BY RAND()
) user_notes
GROUP BY user_id
ORDER BY note_added DESC LIMIT 0,5
试试这个,看一下sw0x2A的答案
答案 2 :(得分:0)
您是否想要特定用户的随机记录?如果是,则表示您可以向where子句添加一个条件,如Specific user_id。试试吧......