我想我有一个缺少真正主键的表,我需要在输出中创建一个。我无法修改表格。
我需要运行一个选择查询来生成一个值列表(list_A),然后获取这些值并查询它们以显示与它们相关的所有记录。从这些记录中,我执行另一个选择以提取一个现在可见的名为 list_B 的列表。从 list_B 中,我可以搜索它们以显示与原始列表 (list_A) 相关的所有记录,其中许多记录缺少 list_A 中的值,但仍需要计算。
到目前为止,这是我的过程:
- 我声明了一个名为“temp_key”的序列,它从 1 开始并以 1 递增。
- 我向父查询添加了一个名为“temp_key”的字段,以便它有望显示结果记录与原始 list_A 子查询的哪个元素相关。
- 我遇到了麻烦,因为我不知道如何使 temp_key 随着 list_A 子查询从列表中所有值的开头移动到结尾而增加。
SELECT currval(temp_key) AS temp_key, list_A, list_B
FROM table
WHERE list_B IN (SELECT DISTINCT list_B
FROM table
WHERE list_A IN (SELECT DISTINCT list_A
from table);
就像现在一样,上面的查询不起作用,因为似乎没有办法使 temp_key 的当前值向上递增,因为它遍历最初从最低级别子查询 (list_A) 生成的列表中的值。
例如,list_A 中可能只有 10 个值。并且输出可能有 100 条记录,全部标记为 1 到 10,其中许多值在 list_A 字段中缺失值。但是它们仍然需要标记为 1 到 10,因为 list_B 的值连接了这两个集合。