我有一个mysql表messages
,其中列user_id
,message
,created_at
,type
我需要选择上次发布超过30天类型= 1的消息的所有用户
我试过了:
SELECT user_id FROM messages WHERE type=1 AND MAX(created_at) < DATE_SUB(NOW(), INTERVAL 30 day)
这给了我错误:
invalid use of group function
答案 0 :(得分:1)
错误是由于使用了MAX,它是where子句中的聚合函数。使用MAX是正确的,但对每个用户而言。也就是说,首先按用户分组,然后使用MAX条件。尝试:
SELECT user_id
FROM messages
WHERE type=1
group by user_id
having MAX(created_at) < DATE_SUB(NOW(), INTERVAL 30 day)