看,我有这个公告牌。这个查询在这里工作正常。
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
现在,我遇到了麻烦,因为当用户删除他的帐户时,没有关于该人员的信息,他将从用户表中删除。我知道可能还有其他方法可以解决这个问题,但我现在无法解决这个问题。
所以我问:我怎么能让那个查询返回bulletin.date,bulletin.title和bulletin.content,其中bulletin.id等于12345,即使我有“AND bulletin.made_by = users.ID”?你知道,我需要在用户仍然存在的所有其他帖子中使用它。
有什么建议吗?
答案 0 :(得分: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
答案 1 :(得分: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
表中获取所有记录,无论它是否在第二个表中有匹配的行。