我有两张桌子,
第一个表结构(数据):
-id
-name
-title
-mail
-source_id
和第二张表(邮件):
-id
-record_id
-mail
-date
数据表中可能存在一些重复记录,而某些记录包含空邮件字段。 即时通讯发送电子邮件给这些客户端,我想保存邮件已随时间发送到邮件表中。 我想排除他们的电子邮件已经发送的记录
我使用此查询:
SELECT * FROM `data`
LEFT OUTER JOIN `mail`
ON `data`.`source_id` != `mail`.`record_id`
WHERE `data`.`mail` != ''
ORDER BY `data`.`id` ASC LIMIT 1
我也试过了:
SELECT * FROM `data`
LEFT OUTER JOIN `mail`
USING(`mail`)
WHERE `data`.`mail` != ''
ORDER BY `data`.`id` ASC LIMIT 1
但它仍显示重复记录,不排除邮件表中的记录
任何想法?或更好的解决方案顺便说一句,我无法改变第一张表并添加一个新字段来检查已发送的电子邮件
提前致谢
答案 0 :(得分:0)
试试这个
让我们将!=
更改为IS NOT NULL
(我还认为您应该使用<>
代替!=
)
SELECT * FROM `data`
LEFT OUTER JOIN `mail`
ON `data`.`source_id` != `mail`.`record_id`
WHERE `data`.`mail` IS NOT NULL
ORDER BY `data`.`id` ASC LIMIT 1
更新:让我们试试DISTINCT
SELECT (DISTINCT data.email) FROM `data`
LEFT OUTER JOIN `mail`
ON `data`.`source_id` != `mail`.`record_id`
WHERE `data`.`mail` IS NOT NULL
ORDER BY `data`.`id` ASC LIMIT 1