在SQL Server中,我有一个表A,如下所示
Name Food PreferenceOrder
------------------------------
Jon Burger 1
Jon Coke 2
Jon Pizza 3
Jon Fries 4
Sam Pizza 1
Sam Coke 2
我有另一张表B可以覆盖上面的偏好顺序
Name Food PreferredOverFood
--------------------------------
Jon Pizza Fries
Jon Coke Burger
Jon Fries Coke
Sam Coke Pizza
基本上,食物应该在PreferredOverFood(Pizza> Fries)之前出现
现在,我想根据表B首选项重新排序表A,因此结果应该像
Name Food PreferenceOrder
------------------------------
Jon Burger 4
Jon Pizza 1
Jon Fries 3
Jon Coke 2
Sam Pizza 2
Sam Coke 1
我尝试使用游标,所以我创建了一个动态游标,每次获取我都用表A首选项更新表B,但由于我们逐行更新它不考虑违反先前首选项的行,所以我我在披萨之前得到薯条(因为Fries> Coke正在运行,它忘记了第一个偏好(Pizza> Fries))。
因此动态游标不起作用(更新后不刷新结果集)。我可以像上面那样使用CTE或其他事情。 (也可以有循环依赖,但现在不要太担心)
由于