SELECT pr.id as process_id,
lo.update_time as start_date,
REPLACE( sc.message, 'ip.ip.ip.ip', lo.variables ) as message,
sc.code
FROM logs AS lo
LEFT JOIN processes AS pr ON lo.process_id = pr.id
LEFT JOIN status_codes AS sc ON lo.status_code_id = sc.code
ORDER BY lo.id DESC
LIMIT 14
该查询的问题在于它将process_id作为所有NULL值返回,即使这是该表的自动递增主键而没有任何NULL值。
答案 0 :(得分:6)
使用SELECT lo.process_id
而不是SELECT pr.id as process_id
pr.id
为NULL
的行是processes pr
表中不存在记录的行。
由于您使用的是LEFT OUTER JOIN
而不是INNER JOIN
答案 1 :(得分:2)
您正在使用LEFT JOIN。因此,对于logs
或status_code
表中不存在logs
表中相应行的每一行,您将获得NULL
个值processes
的相应“行”。