有没有办法在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个,那么你将会遇到一些相当长且烦人的代码。
任何帮助表示赞赏!
答案 0 :(得分:0)
如果您想查看前500个商店,请使用:
select st.*
from (select st.*
from store_table st
order by store_a
) st
where rownum <= 500;
这假设每个“store”有一行,这对于具有该名称的表是有意义的。
在Oracle 12C +中,您可以使用fetch first 500 rows only
而不必使用子查询。
答案 1 :(得分:0)
使用between而不是in运算符,例如
SELECT *
FROM store_table
WHERE store_a BETWEEN 1 AND 10