2010-12-08 64 views
0
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值。MySQL:將主鍵返回爲空

回答

6

使用SELECT lo.process_idSELECT pr.id as process_id

行中pr.idNULL是它沒有記錄在processes pr表中存在的。

這些都是因爲你使用的是LEFT OUTER JOIN而不是INNER JOIN

2

您使用的是LEFT JOIN留在屋裏。因此,對於表logs中沒有相應行的logsstatus_code表中存在的每一行,將獲得processes對應「行」的NULL值。