所以我有两个表(A和B),它们的关系是n-n。
因此,有第三个表(C)用于连接两个表。
表A和B都有Id和名称。
表C有IDA,IDB和Order,用于排序和用户给出的数字。
我的问题是我需要迁移表C,因为我刚刚添加了订单列,所以我需要根据B名称给每一行一个订购号。
所以如果表A有:
Id Name
1 J
2 L
3 M
表B有:
IdA IdB Order
1 2 0
1 1 0
1 3 0
2 1 0
2 3 0
表C有:
IdA IdB Order
1 2 2
1 1 1
1 3 3
2 1 1
2 3 2
我需要一个更新表C的查询更像:
IdA IdB Order
1 2 2
1 1 1
1 3 3
2 1 1
2 3 3
我有一个基本上可以做我想要的查询,但它留下了"空白" 阅读上面的结果我得到:
void Update() {
if (Input.GetMouseButtonDown(0)) {
Debug.Log("Pressed left click, casting ray.");
CastRay();
}
}
void CastRay() {
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 100)) {
Debug.DrawLine(ray.origin, hit.point);
}
}
答案 0 :(得分:0)
我认为这应该适用于你需要的东西:
With ToUpdate As
(
Select C.*,
Row_Number() Over (Partition By C.IdA Order By B.Name) As NewOrder
From C
Join B On B.Id = C.IdB
)
Update C
Set "Order" = U.NewOrder
From ToUpdate U
Where U.IdA = C.IdA
And U.IdB = C.IdB
(完全披露,我对postgres并不十分熟悉,但我认为这应该是有效的。)