2017-12-27 232 views
0

有没有办法在SQL语句中遍历“IN”子句而无需实现某种循环?在没有循环的情况下在SQL中迭代“IN”子句

我的例子是:

SELECT * 
FROM store_table 
WHERE store_a IN (1,2,3,4,5,6,7,8,9,10); 

而不必列出所有的门店中,有没有办法列出写某种代码,它看起来就像这样:

SELECT * 
FROM store_table 
WHERE store_a IN (1,2,...10); 

我明白上述不是真正的SQL语法,但为了实例,我想以这种方式使用它。我知道,如果你想查看所有商店有许多不同的方式,语法上这样做,但我只是担心前100或最后20或等...

我问这个问题的原因是因为如果你有1000家商店,而你想看到前500家商店,那么你会有一些相当长和烦人的代码。

任何帮助表示赞赏!

+2

'store_a介于1和10之间'问题解决 –

+0

有没有办法查看该列表中最后一个“X”的金额? –

+0

根据您的要求生成row_number并过滤where子句中的行号 –

回答

0

如果你想看到的第500家门店,然后使用:

select st.* 
from (select st.* 
     from store_table st 
     order by store_a 
    ) st 
where rownum <= 500; 

这是假定每个“存储”一排,这是有道理的,与该名称的表。

在Oracle 12C +中,您可以使用fetch first 500 rows only而不必使用子查询。

0

而不是in运算符之间使用,例如

SELECT * 
FROM store_table 
WHERE store_a BETWEEN 1 AND 10 
相关问题