SQL循环遍历数组并多次运行查询

时间:2015-06-16 13:31:05

标签: sql postgresql

我有一个带有一些状态ID的数组

calledProgram

我想运行此查询

[1,2,3,4,5]

通过SELECT firstname, lastname FROM calls WHERE status_id = "STATUS ID" ORDER BY RANDOM() LIMIT 50 数组进行循环并每次运行查询的语法是什么?

我希望最终得到250行,每组50人都有一个status_id'

2 个答案:

答案 0 :(得分:1)

使用In运算符:

 SELECT firstname, lastname FROM calls WHERE status_id IN [1,2,3,4,5]

答案 1 :(得分:1)

这不会非常有效,但它是我能想到的最好的:

select firstname, lastname
FROM (
  SELECT firstname, 
         lastname, 
         row_number() over (partition by status_id order by random()) as rn
  FROM calls 
  WHERE status_id = ANY (ARRAY [1,2,3,4,5])
) t
where rn <= 50;

内部选择将检索具有status_id所需值的所有行,并为status_id中的每个值赋予每行一个随机行号。外部选择将只为每个状态选择50行(当然,除非当前特定状态少于50行)