如何从SQL结果中获取参数化子集?

时间:2017-05-05 11:12:33

标签: sql postgresql

我们得到SQL查询SELECT exam_id, task, variant FROM tasks WHERE exam_id=1

  exam_id   task    variant
  1         1       1
  1         1       2
  1         1       3
  1         2       1
  1         2       2
  1         2       3

在客户端,我们生成范围[minVariant; maxVariant]中的随机数组。 A = [minVariant; maxVariant]。来自A的Xn是第n个相应任务的变体。

如何更改SQL查询,以便对于变体数组A = [2,3],我们将得到

  exam_id   task    variant
  1         1       2
  1         2       3

表示A = [1,3]:

  exam_id   task    variant
  1         1       1
  1         2       3

表示A = [a1,a2]:

  exam_id   task    variant
  1         1       a1
  1         2       a2

我需要获得6个不同的任务和一个数组[1,2,2,2,3,4]

  exam_id   task    variant
  1         1       1
  1         2       2
  1         3       2
  1         4       2
  1         5       3
  1         6       4

1 个答案:

答案 0 :(得分:2)

我不确定你在问什么,但看起来你正在努力和多种条件。

如果您要求输入值列表,请尝试:

SELECT exam_id, task, variant FROM tasks WHERE exam_id=1 and variant in (2,3)

如果您问如何获得范围:

SELECT exam_id, task, variant FROM tasks WHERE exam_id=1 and variant>1 and variant<10

如果这是你想要完成的其他事情,请澄清