0
我有一组数字和id
(主键)和text
(非空)列的数据库中的表。我想创建一个查询,返回集合中的所有数字以及表中的相关文本。不幸的是在数据库中的id
列不存在的所有数字,所以这是行不通的:在数据库中使用一组数字而不创建临时表
select id, text
from table
where id in (<set of numbers>)
对于不存在的IDS最好将返回null
从查询的文本。
有没有办法在没有首先从数据库内的集合创建临时表的情况下产生所需的输出?
正在使用的数据库引擎是Microsoft SQL Server 2008 SP1,但我会对任何数据库引擎的解决方案感兴趣。
为什么要避免创建临时表?这似乎是对我来说最明显的解决方案。 – RationalGeek 2010-05-03 16:23:17
@jkohlhepp;它不一定是最好的解决方案,例如oracle可以通过双向递归查询生成序列号,该序列号可以更好地缩放然后物化版本。没有关于MS SQL性能的数据。 – Unreason 2010-05-04 08:13:10
Unreason给出了这个请求的确切原因 - 我会避免频繁地创建非常大的表。 – Zizzencs 2010-05-04 09:14:39