我有一个带有一些状态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
'
答案 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行)