MySQL:将主键返回为null

时间:2010-12-08 02:08:45

标签: sql mysql

   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值。

2 个答案:

答案 0 :(得分:6)

使用SELECT lo.process_id而不是SELECT pr.id as process_id

pr.idNULL的行是processes pr表中不存在记录的行。

由于您使用的是LEFT OUTER JOIN而不是INNER JOIN

,因此会保留这些内容

答案 1 :(得分:2)

您正在使用LEFT JOIN。因此,对于logsstatus_code表中不存在logs表中相应行的每一行,您将获得NULL个值processes的相应“行”。