3

我有一个带有 ID 的表,问题是我需要提供 N 个 ID(使用 WHERE id IN (1,5,101))但我需要返回相同数量的记录(如果我发送 100 个 ID,我需要一个包含 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

提前致谢 ...

4

2 回答 2

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 ALLs。

于 2012-10-16T04:22:26.817 回答
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")
于 2012-10-16T03:56:47.187 回答