问题: 更改group_id AS RoleId列中的值的最佳方法是什么,以便在group_id AS RoleId = 3时将值更改为对应的值5?
背景: 在以下查询中,我将比较来自两个不同数据库的两个表,而没有真正的唯一键。我必须将一个表上的first_name和last_name列合并为别名,然后将其与其他表Name列进行比较。它产生我想要的结果,但是,它们有两列与RoleId列和group_id列相关。它们具有相应的值,因此例如RoleId = 5与group_id = 3相同,但RoleId = 4与group_id = 4相同。
选择声明:
SELECT
users.UserName,
users.phone,
users.email,
users.status,
users.group_id AS RoleId
FROM
(SELECT
Table1.dbo.users.first_name +' '+ Table1.dbo.users.last_name AS UserName,
Table1.dbo.users.phone,
Table1.dbo.users.email,
Table1.dbo.users.status,
Table1.dbo.users.group_id
FROM
Table1.dbo.users
) AS users
LEFT JOIN
Table2.dbo.UsersInfo ON
users.UserName = Table2.dbo.UsersInfo.Name
WHERE
Table2.dbo.UsersInfo.Name IS NULL
答案 0 :(得分:1)
如果您想将组ID 3翻译为角色ID 5并保持其余不变,则应该这样做;
SELECT
users.UserName,
users.phone,
users.email,
users.status,
CASE WHEN users.group_id=3 THEN 5 ELSE users.group_id END AS RoleId
...