即使没有来自其他表的JOIN数据,MySQL也会显示行

时间:2013-10-17 09:29:08

标签: mysql

我为附件创建了一个文件上传程序,AJAX会在将它们添加到电子邮件时上传它们。我有一个显示所有电子邮件附件的页面。但是,如果用户决定不将电子邮件另存为草稿,也不发送,则其附件仍在数据库中。

我仍希望在附件页面上显示非关联附件(没有电子邮件ID关联,因此不会JOIN使用消息表)。

这是我当前的查询...

SELECT em.date, em.headers_from, em.subject, ea.filename 
FROM email_attachments AS ea 
LEFT JOIN email_messages AS em ON em.id=ea.id_email 
WHERE em.id_user='1' 
ORDER BY date DESC

2 个答案:

答案 0 :(得分:1)

您正在检查邮件表em.id_user=1。 因此,您没有获得所需的输出,将子句移动到连接条件。

喜欢这个::

SELECT em.date, em.headers_from, em.subject, ea.filename 
FROM email_attachments AS ea 
LEFT JOIN email_messages AS em ON em.id=ea.id_email and em.id_user='1'
ORDER BY date DESC

答案 1 :(得分:1)

原来我需要一个LEFT OUTER JOIN

SELECT * FROM email_attachments AS ea
LEFT OUTER JOIN email_messages AS em
ON ea.id_email = em.id
WHERE ea.id_user='1'

我遇到的视力表达可以在这里找到...

http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html