如果没有记录,是否忽略内部连接?

z18hc3ub  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(242)

必须满足这两个要求:
选择状态为“等待”的产品。
最后一封电子邮件必须是3天前发出的。
给出了以下表格和列:
产品:id、名称、状态、id、通知
状态:id、姓名
电子邮件日志:id、产品id、主题、文本、创建日期
我尝试了以下方法:

SELECT 
    product.id
FROM
    product
        LEFT JOIN
    status ON product.status_id = status.id
        INNER JOIN
    emaillog ON product.id = emaillog.product_id
        AND (emaillog.date_created <= '2018-11-04 16:32:49')
WHERE
    (status.name = 'waiting' AND product.notification = 1)
GROUP BY emaillog.product_id

只有在emaillogs表中有记录时,这才有效。如果emaillogs表中没有记录,则仍应选择产品。

kg7wmglp

kg7wmglp1#

使用 LEFT JOIN 而不是普通的内心 JOIN 如果要在结果集中保留未连接的行。但是,请注意,在where子句中提到左联接表中的列会将左联接转换为内部联接。

相关问题