MySQL RAND()不重复特定列中的值

时间:2011-07-27 13:29:25

标签: mysql

我正在尝试从表中选择一组随机结果(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天内添加了一条记录,我刚刚获得他们创建的第一条记录,因为该组已经过了。有什么建议吗?

3 个答案:

答案 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。试试吧......