在许多语言中,可以使用值的内嵌列表,其中一些类似这种形式的代码:SQL语句阵列
for x in [1,7,8,12,14,56,123]:
print x # Or whatever else you fancy doing
与SQL在过去一年左右的时间工作,我已经找到了,即使使用在没有问题这样的一个数组...
select *
from foo
where someColumn in (1,7,8,12,14,56,123) and someThingElse...
...我还没有找到一个等效的形式从一个内嵌阵列GET数据:
-- This is not working
select *
from (1,7,8,12,14,56,123)
where somethingElse ...
搜索解决方案,我只找到人建议工会汤:
select *
from (SELECT 1 UNION SELECT 1 UNION SELECT 7 UNION ...)
where somethingElse ...
...这可以说是,丑陋的和冗长。
我可以在编辑器(VIM)中快速地从列表中生成UNION汤,然后将其粘贴回我的数据库提示 - 但我想知道是否缺少一些其他方法来完成此操作。
而且,如果有这样做没有标准的方式,我仍然有兴趣在DB-引擎特定的解决方案(甲骨文,PostgreSQL的,等等)
预先感谢任何指针。
您不会错过这样做的标准方式。但是,你应该使用'union all'而不是'union'。 –