MySQL 左外连接查询

标签 mysql join

我有两个表,

第一个表结构(数据):

-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

但它仍然显示重复记录并且不从邮件表中排除记录

有什么想法吗?或更好的解决方案?顺便说一句,我无法更改第一个表并添加一个新字段来检查已发送的电子邮件

提前致谢

最佳答案

试试这个

让我们改变!=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

关于MySQL 左外连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8486176/

相关文章:

mysql - 最新的 mysql 服务器应该使用什么版本的 mysql java 驱动程序

Mysql查询问题

mysql - 此代码是否删除重复项?

php - 将 WordPress 安装到站点分支

MySQL 为用户连接并提取正确的数据

CakePHP 中使用 HABTM 的 find() 多模型条件

通过 2 个表求和的 mysql 查询

PHP 数据库搜索表单 SQL 问题

php - Zend_Db。建数据库表时需要手动设置主键和外键吗?

mysql - MYSQL 中的 LEFT JOIN 问题