我有以下SQL格式左连接mysql中选择(没有出现在左表中的所有记录)
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
它给我的只有2行。有30条记录满足sample_register中的where子句,4条记录对应于gamma_results中的2个USIN。我希望sample_register中的所有30条记录都与gamma_results相结合,其中数据只有2个USIN可用。在sample_register中剩余28条记录,返回的字段值可以为null。我发现如果我正在移除条件gamma_results_istp,则会显示所有30条记录。但我不想要这个。任何建议请。
如果您喜欢,请考虑遵循以下简单的两步操作步骤:1.如果您尚未这样做,请提供适当的DDL(和/或sqlfiddle),以便我们可以更轻松地复制问题。 2.如果您尚未这样做,请提供与步骤1中提供的信息相符的所需结果集。 – Strawberry 2014-09-26 07:31:26