【发布时间】:2021-05-13 17:37:59
【问题描述】:
我认为我的表缺少真正的主键,我需要在输出中创建一个。我无法修改表格。
我需要运行一个选择查询来生成一个值列表 (list_A),然后获取这些值并查询它们以显示与它们相关的所有记录。从这些记录中,我执行另一个选择以提取一个现在可见的名为 list_B 的列表。从 list_B 中,我可以搜索它们以显示与原始列表 (list_A) 相关的所有记录,其中许多记录缺少 list_A 中的值但仍需要计数。
到目前为止,这是我的过程:
- 我声明了一个名为“temp_key”的序列,它从 1 开始并以 1 递增。
- 我向父查询添加了一个名为“temp_key”的字段,以便它有望显示结果记录与原始 list_A 子查询的哪个元素相关。
- 我遇到了麻烦,因为我不知道如何在 list_A 子查询从列表中所有值的开头到结尾移动时使 temp_key 递增。
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 的值连接了这两个集合。
【问题讨论】:
-
对不起,我不明白(并且将 column 称为“列表”也无济于事)。您能否edit 提出您的问题(通过单击其下方的edit 链接)并添加一些示例数据和基于该数据的预期输出为formatted text?请参阅here,了解有关如何创建漂亮的文本表格的一些提示。 (请edit您的问题 - 请不要将代码或其他信息放入 cmets)
标签: sql postgresql nextval currval