Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 获取相关对象的序列号_Sql_Postgresql - Fatal编程技术网

Sql 获取相关对象的序列号

Sql 获取相关对象的序列号,sql,postgresql,Sql,Postgresql,我完全不知道如何写标题,所以很抱歉,这个主题不是很有描述性 我有两张表,A和BB.foo是指向a.id的FK。表B还有一个id列 有没有一种方法可以获得如下结果: |a_id|b_id|b_foo_number |1 |1 |1 |1 |2 |2 |1 |56 |3 |2 |3 |1 |2 |12 |2 |2 |57 |3 从表B中,如下所示: |id|foo |1 |1 |2 |1 |56|1 |3 |2 |12|2 |57|2 现在我完全不知道该

我完全不知道如何写标题,所以很抱歉,这个主题不是很有描述性

我有两张表,
A
B
B.foo
是指向
a.id
的FK。表
B
还有一个
id

有没有一种方法可以获得如下结果:

|a_id|b_id|b_foo_number
|1   |1   |1
|1   |2   |2
|1   |56  |3
|2   |3   |1
|2   |12  |2
|2   |57  |3
从表
B
中,如下所示:

|id|foo
|1 |1
|2 |1
|56|1
|3 |2
|12|2
|57|2

现在我完全不知道该怎么做。

使用
行号

SELECT foo AS a_id, id AS b_id, 
       ROW_NUMBER() OVER (ORDER BY id) AS b_foo_number
FROM B
WHERE foo = 1
如果要获得每个
foo
切片的序列号,请使用
partitionby

SELECT foo AS a_id, id AS b_id, 
       ROW_NUMBER() OVER (PARTITION BY foo ORDER BY id) AS b_foo_number
FROM B
ORDER BY foo

使用
行号

SELECT foo AS a_id, id AS b_id, 
       ROW_NUMBER() OVER (ORDER BY id) AS b_foo_number
FROM B
WHERE foo = 1
如果要获得每个
foo
切片的序列号,请使用
partitionby

SELECT foo AS a_id, id AS b_id, 
       ROW_NUMBER() OVER (PARTITION BY foo ORDER BY id) AS b_foo_number
FROM B
ORDER BY foo

以下操作将生成您指定的输出:

select 1 as a_id, b_id,
       row_number() over (partition by foo order by a_id) as b_foo_number
from b;

然而,还不清楚这是否是你真正需要的。您需要更好地指定您的问题。

以下内容将生成您指定的输出:

select 1 as a_id, b_id,
       row_number() over (partition by foo order by a_id) as b_foo_number
from b;

然而,还不清楚这是否是你真正需要的。您需要更好地指定您的问题。

表A与该问题有什么关系?您可能需要一个
行(按id排序)
…@GordonLinoff我更新了一个示例-如果表A中有多个值,我希望每个“切片”的计数器从1到N(按foo)表B中的表A与这个问题有什么关系?您可能需要(按id排序)上的
行号()
…@GordonLinoff我更新了一个示例-如果表A中有多个值,我希望每个“切片”的计数器从1到N(按foo)表Bi的行编号按
b\u id
排序,行编号按
b\u id