为用户更新多行 - 将 1 行设置为 "Default" 是,其他设置为否

Updating multiple rows for user - Setting 1 row as "Default" Yes, and other to be No

假设以下数据选自 SQL TBL_Profiles:

没有 用户 简介 默认
1 用户 1 个人资料1
2 用户 1 个人资料2 没有
3 用户 1 简介3 没有

目前,User1 的默认配置文件是 Profile1。这就是创建配置文件时最初设置的方式。如果 User1 在稍后阶段决定更改 his/her 默认配置文件,这意味着新选择的配置文件应该更新 Default = Yes,其余更新 Default = No。我可以通过选择所有配置文件,迭代然后更新来做到这一点。但是,我正在更多地研究最简单的概念。希望我很清楚(我对此表示怀疑,因为这个想法在我的小脑袋里仍然很模糊)。

非常感谢。

这个数据结构有问题,最好在某些上层 table(也许在用户 table 中)中保留 1 个外键“默认配置文件”。

但是无论如何,如果您必须应用多个更改,我建议执行 SQL 更新语句,如下所示:

UPDATE  TBL_Profiles
SET     [Default] = CASE WHEN T.[Profile] = @SelectedProfile THEN 1 ELSE 0 END
FROM    TBL_Profiles AS T
WHERE   T.[User] = @User

并且不要忘记传递 2 个参数@User 和@SelectedProfile

让我知道它是否回答了您的问题,或者是否需要一些调整