在同一个DataResult上加入Found和Not Fund记录

时间:2012-10-16 03:35:36

标签: sql sqlite

我有一个带Id的表,问题是我需要提供N个ID(使用WHERE id IN(1,5,101))但我需要返回相同数量的记录(如果我发送100 ids,我需要一个包含100行的DataSet ..)即使此表中不存在Id。

我正在使用SQLite,所以RIGHT JOIN不是一个选项。

以下是我所拥有但不能使其有效的一些样本:S ..

SELECT * FROM (
 SELECT r.report_id, r.batch_name, tr.report_id id, tr.batch_name bn
 FROM reports tr
 LEFT OUTER JOIN (  SELECT report_id, batch_name FROM reports
                    WHERE batch_name IN ("L6964498","AAAAAA")) r on r.report_id = tr.report_id) as v 
 LEFT JOIN reports ON v.id = reports.report_id

提前致谢...

2 个答案:

答案 0 :(得分:1)

使用SELECT .. UNION ALL SELECT ..组成批名称的虚拟表。然后将其加入您的reports表格。

SELECT tr.batch_name, r.report_id
FROM (SELECT 'L6964498' batch_name UNION ALL
      SELECT 'AAAAAA') tr
LEFT JOIN reports r on r.report_id = tr.report_id

如果您有100件商品,则会有99件UNION ALL

答案 1 :(得分:0)

 SELECT r.report_id, r.batch_name, tr.report_id id, tr.batch_name bn
 FROM reports tr
 LEFT OUTER JOIN reports r on r.report_id = tr.report_id and                
 LEFT JOIN reports ON r.id = reports.report_id
where  r.batch_name IN ("L6964498","AAAAAA")