如何使用SQL查询Moodle中发送给用户ID为100的所有消息?
查询Moodle中特定用户的所有消息(以用户ID100为例)
基础查询语句
如果只需要获取消息核心数据(发送者ID、内容、发送时间等),直接查询mdl_message表即可(注意:mdl_是Moodle默认表前缀,若你的安装修改了前缀,请替换为实际值):
SELECT * FROM mdl_message WHERE useridto = 100;
这条语句会返回所有发送给用户ID100的消息记录,包含useridfrom(发送者ID)、subject(消息主题)、fullmessage(消息内容)、timecreated(发送时间戳)等字段。
带发送者信息的增强查询
如果需要同时获取发送者的姓名、邮箱等详情,可以关联mdl_user表:
SELECT m.id AS message_id, m.subject, m.fullmessage, CONCAT(u.firstname, ' ', u.lastname) AS sender_fullname, u.email AS sender_email, FROM_UNIXTIME(m.timecreated) AS send_time FROM mdl_message m INNER JOIN mdl_user u ON m.useridfrom = u.id WHERE m.useridto = 100 AND m.deleted = 0 -- 过滤已删除的消息,需包含已删除可去掉此条件 ORDER BY m.timecreated DESC; -- 按发送时间倒序,最新消息排在前面
关键说明
useridto是mdl_message表中标记消息接收者ID的字段,通过WHERE useridto = 100精准定位目标用户的消息。deleted字段值为0代表消息未被删除,1代表已删除,可根据需求决定是否保留该过滤条件。FROM_UNIXTIME(m.timecreated)用于将时间戳转换为易读的日期格式,不需要的话直接用m.timecreated即可。
内容的提问来源于stack exchange,提问作者D-T
相关产品推荐
相关产品推荐

