2

问题:更改 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 
4

1 回答 1

3

如果您只想将组 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
...
于 2013-08-30T15:27:40.773 回答