0

看,我有这个公告板。这个查询在这里工作得很好。

    SELECT bulletin.date,
        bulletin.title,
        bulletin.content,
        bulletin.id,
        bulletin.made_by,
        users.ID,
        users.name
    FROM bulletin, users
    WHERE bulletin.id = '12345'
        AND bulletin.made_by = users.ID
    LIMIT 1

现在,我遇到了麻烦,因为当用户删除他的帐户时,没有关于该人的信息,他会从用户表中删除。我知道可能有其他方法可以解决这个问题,但我现在无法解决。

所以我问:即使我有“AND bulletin.made_by = users.ID”,如何让该查询返回 bulletin.date、bulletin.title 和 bulletin.content,其中 bulletin.id 等于 12345?你看,对于用户仍然存在的所有其他帖子,我需要拥有它。

有什么建议么?

4

2 回答 2

1

用一个LEFT OUTER JOIN

SELECT b.date,
       b.title,
       b.content,
       b.id,
       b.made_by,
       b.ID,
       b.name
FROM bulletin b
LEFT OUTER JOIN users u on b.made_by = u.ID
WHERE b.id = '12345'
LIMIT 1

看到这个关于连接的精彩解释

于 2012-08-11T14:48:48.643 回答
1

当前您正在使用INNER JOIN,使用LEFT JOIN以解决您的问题。

SELECT a.date,
       a.title,
       a.content,
       a.id,
       a.made_by,
       a.ID,
       a.name
FROM bulletin a
         LEFT JOIN users c
           ON a.made_by = c.ID
WHERE a.id = '12345'
LIMIT 1

LEFT JOIN基本上从left表中获取所有记录,无论它在第二个表中是否有匹配的行。

于 2012-08-11T14:52:07.550 回答