SQL删除列中的每个唯一值?

时间:2017-04-22 17:36:38

标签: mysql sql foreach

我有一个连接两个表(消息和元)的SQL查询,然后根据其中一个列sender_id的值从消息中删除。在下面的示例中,我使用了一个用户的ID,22。如何使此查询循环遍历sender_id的每个唯一值?

DELETE `messages`
FROM
  `messages` LEFT JOIN `meta` ON (`meta`.message_id = `messages`.id) 
WHERE 
  `meta`.message_id IS NULL
AND 
  `messages`.date_sent < DATE_ADD(NOW(), INTERVAL -1 MONTH) 
AND 
  `messages`.sender_id = 22 // How can I replace '22' so that the query searches for 
                               each unique value of sender_id?

1 个答案:

答案 0 :(得分:1)

你不能放弃这个条件吗?

DELETE m
FROM messages LEFT JOIN
     meta
     ON meta.message_id = m.id
WHERE m.message_id IS NULL AND 
      m.date_sent < DATE_ADD(NOW(), INTERVAL -1 MONTH) ;

这将删除符合条件的所有邮件。