在Sql中,如何使用case语句更改值?
问题: 将group_id AS RoleId列中的值更改为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语句:在Sql中,如何使用case语句更改值?,sql,sql-server-2008,switch-statement,case,Sql,Sql Server 2008,Switch Statement,Case,问题: 将group_id AS RoleId列中的值更改为RoleId列的最佳方法是什么,以便在group_id AS RoleId=3时,将该值更改为相应的值5 背景: 在下面的查询中,我比较了两个不同数据库中没有真正唯一键的两个表。我必须将一个表上的first_name和last_name列组合起来,将其命名为它,然后将其与其他表的name列进行比较。它会产生我想要的结果,但是,它们有两列,分别与RoleId列和group_id列相关。它们具有相应的值,因此,例如RoleId=5与grou
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
如果您只想将组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
...
谢谢你的编辑,你比我快