根据另一个表中给出的首选项更改表的顺序

时间:2016-09-28 00:30:57

标签: sql sql-server

在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或其他事情。 (也可以有循环依赖,但现在不要太担心)

由于

0 个答案:

没有答案