如何显示共享ID的两个表的结果?

时间:2019-05-26 20:33:27

标签: mysql

我建立了一个具有多个表(帐户,附件,类别,电子邮件,邮箱,原始文件,设置,标签)的MYSQL数据库。唯一需要关注的两个表是电子邮件和附件。 如果电子邮件具有附件,则电子邮件和附件共享一个ID。因此,我想显示按日期排序的两个表中的所有结果。

但是,使用下面的代码,仅显示附件表(大约1500个实例),而我想显示附件中的1500个实例和电子邮件表中的所有60K实例

SELECT
email.from_fld,
email.subj_fld,
email.date_fld,
email.mailto,
email.body_fld,
email.numAttach,
email.attachNames,
email.attachText,
attachments.filename_fld,
attachments.encode_fld,
attachments.attach_fld,
email.id,
attachments.id AS id_0
FROM
email
JOIN attachments
ON email.id = attachments.id
ORDER BY
email.date_fld ASC 

我希望两个表的所有内容都按日期显示

附件表说明

id  int(11) NO  MUL     
type_fld    varchar(127)    NO          
filename_fld    varchar(127)    NO          
encode_fld  int(11) YES     0   
attach_fld  longblob    NO          

电子邮件表说明

id  int(11) NO  PRI     auto_increment
from_fld    varchar(255)    NO  MUL     
to_fld  mediumtext  NO          
subj_fld    mediumtext  NO          
date_fld    datetime    NO          
mailbox varchar(255)    NO          
mailto  varchar(127)    NO          
body_fld    longtext    NO          
numAttach   int(11) NO      0   
attachNames mediumtext  NO          
attachText  longtext    NO          
headings    mediumtext  NO          

1 个答案:

答案 0 :(得分:1)

您需要从emailattachments的{​​{3}},因为有些电子邮件没有附件。
您使用的LEFT join仅显示带有附件的电子邮件。
因此,请替换行:

JOIN attachments

使用

LEFT JOIN attachments