簡體   English   中英

為什么我沒有使用 LEFT JOIN mysql 從左表中獲取所有記錄

[英]why I am not getting all records from left table with LEFT JOIN mysql

我正在運行兩個 Mysql 查詢第二個沒有從左表中獲取所有記錄。

表一 -> audit_form_tbl

field id       company_form_id      field_name
1...................42..................A         
2................. 42...................b
3................. 42...................t
4................. 42...................bgf
5................. 42...................bfddf

表二 -> audit_form_value_4_tbl

id             field id          company_form_id      field_name
1.................1................. 42................45
2.................3................. 42................50
3.................2................. 42................70
  SELECT aft.field_id, 
         aft.sort_order, 
         aft.type, 
         aft.parent_id, 
         aft.type, 
         aft.field_name 
  FROM audit_form_tbl aft 
  WHERE aft.type='FH' 
    AND aft.company_id = '4' 
    AND aft.company_form_id = '42' 
    AND aft.parent_id = '0' 
    AND aft.status = 1 
  ORDER BY sort_order
  SELECT aft.field_id, 
         aft.sort_order, 
         aft.type, 
         aft.parent_id, 
         aft.type, 
         aft.field_name 
         avt.field_value, 
  FROM audit_form_tbl aft 
  LEFT JOIN audit_form_value_4_tbl avt ON aft.field_id=avt.field_id 
  WHERE aft.type='FH' 
    AND aft.company_id = '4' 
    AND aft.company_form_id = '42' 
    AND aft.parent_id = '0' 
    AND aft.status = 1 
    AND avt.form_id='4421579691865' 
  ORDER BY sort_order

我想要表一中的所有記錄和表二中的匹配記錄。

謝謝

  SELECT aft.field_id, 
         aft.sort_order, 
         aft.type, 
         aft.parent_id, 
         aft.type, 
         aft.field_name 
         avt.field_value, 
  FROM audit_form_tbl aft 
  LEFT JOIN audit_form_value_4_tbl avt ON aft.field_id=avt.field_id 
                            -- insert the condition by right table to ON
                                      AND avt.form_id='4421579691865' 
  WHERE aft.type='FH' 
    AND aft.company_id = '4' 
    AND aft.company_form_id = '42' 
    AND aft.parent_id = '0' 
    AND aft.status = 1 
  -- remove the condition by right table from WHERE 
  --  AND avt.form_id='4421579691865' 
  ORDER BY sort_order

您的WHERE子句中有avt.form_id = '4421579691865' 當沒有匹配的行加入時, avt.form_idNULL並且avt.form_id = '4421579691865'不是真的,因此該行被過濾掉。 將其移至ON子句。

...
LEFT JOIN audit_form_value_4_tbl avt
          ON aft.field_id = avt.field_id
             AND avt.form_id = '4421579691865'
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM