在許多語言中,可以使用值的內嵌列表,其中一些類似這種形式的代碼: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'。 –