为用户更新多行 - 将 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
让我知道它是否回答了您的问题,或者是否需要一些调整
假设以下数据选自 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
让我知道它是否回答了您的问题,或者是否需要一些调整