簡體   English   中英

在mysql select中格式化左連接(不顯示左表中的所有記錄)

[英]Formatting left join in mysql select( Not showing all records in left table)

我有以下sql

SELECT *
FROM  (SELECT sample_register.usin,
          Date_format(sample_register.doc, '%d-%m-%Y') AS doc1,
          sample_register.location,
          sample_register.description,
          gamma_results.act,
          gamma_results.act_sd,
          gamma_results.mdl,
          gamma_results.bdl
   FROM   sample_register
          LEFT JOIN gamma_results
                 ON gamma_results.usin = sample_register.usin
   WHERE  Mid(sample_register.usin, 3, 1) = 'F'
          AND sample_register.doc BETWEEN'2014-09-01' AND '2014-09-26'
          AND sample_register.type <> 'WATER'
          AND gamma_results.istp = 'Cs137'
   ORDER  BY Mid(sample_register.usin, 3, 1),
             sample_register.doc,
             sample_register.usin) AS a
  LEFT JOIN (SELECT sample_register.usin,
                    gamma_results.act,
                    gamma_results.act_sd,
                    gamma_results.mdl,
                    gamma_results.bdl
             FROM   sample_register
                    LEFT JOIN gamma_results
                           ON gamma_results.usin = sample_register.usin
             WHERE  Mid(sample_register.usin, 3, 1) = 'F'
                    AND sample_register.doc BETWEEN
                        '2014-09-01' AND '2014-09-26'
                    AND ( sample_register.type <> 'WATER' )
                    AND gamma_results.istp = 'k40'
             ORDER  BY Mid(sample_register.usin, 3, 1),
                       sample_register.doc,
                       sample_register.usin) AS b
         ON a.usin = b.usi 

它只給我兩行。 在sample_register中有30條滿足where子句的記錄,在gamma_results中有4條對應於2 USIN的記錄。 我希望sample_register中的所有30條記錄都與gamma_results一起加入,其中數據僅可用於2個USIN。 sample_register中剩余28條記錄,返回的字段值可以為null。 我發現如果刪除條件gamma_results_istp,那么將顯示所有30條記錄。 但是我不想要這個。 任何建議請。

不確定,但是可能您必須將條件gamma_results_istp從Where運算符轉移到ON運算符; 否則,將在執行“左連接”之后而不是在以下之前應用:

... On (gamma_results.usin = sample_register.usin and gamma_results.istp='Cs137')

對第二個gamma_results.istp條件重復相同的操作。

另外,簡化示例以僅向我們顯示相關內容不會傷害任何人。

暫無
暫無

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

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