[英]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.