当连接表中的记录不存在时,我如何连接两个表。我尝试过这样的事情:
SELECT
Confessions.ID, Confessions.WriteTitle, Confessions.WriteArea,
Confessions.POST_DATE, Votes.Type
FROM Confessions LEFT OUTER JOIN Votes ON Confessions.ID = Votes.PostID
WHERE ForUser = :ForUser AND Status = :Status AND Votes.IP_Check = :IP_Check
Run Code Online (Sandbox Code Playgroud)
但是当来自带有 PostID 的投票记录(如 Confessions 中的 ID)不存在时,MySQL 会返回此记录的空结果。有没有其他办法?
内部表上的 WHERE 条件会将结果更改为内部连接。您需要将此条件移至 ON:
SELECT
Confessions.ID, Confessions.WriteTitle, Confessions.WriteArea,
Confessions.POST_DATE, Votes.Type
FROM Confessions LEFT OUTER JOIN Votes
ON Confessions.ID = Votes.PostID
AND Votes.IP_Check = :IP_Check
WHERE ForUser = :ForUser AND Status = :Status
Run Code Online (Sandbox Code Playgroud)
根据经验:通常情况下,外部表上的WHERE
条件为 in,而内部表上的条件为ON
。