使用 SQL 服务器中更多 Table 的 If else 或 Case
Using If else Or Case from More Table In SQL Server
我需要 select 全部来自 Log
Table 并在 Case
时导入数据
如果 UserGrade =1 这是管理员用户,我需要 select 管理员名称 Log.User
如果 UserGrade =2 这是教师用户,我需要 select 教师姓名 Log.User
如果 UserGrade =3 这是学生用户,我需要 select 学生姓名 Log.User
我试试这个
select L.[UserID],L.[UserGrade],L.[Operation],L.[OpDate],
case
when L.[UserGrade]=2 then (select teacherNAME from Teacher ,[Log] where teacherID=[Log].[UserGrade] )
when L.[UserGrade]=1 then (select [Adm_Name] from Administrator ,[Log] where [Adm_ID]=[Log].[UserGrade] )
when L.[UserGrade]=3 then (select [studentNAME] from student ,[Log] where[studentID]=[Log].[UserGrade] )
end
from [Log] L ,Teacher , Administrator ,student
这是您的微调查询。带逗号的表是旧样式,避免使用它们并使用 JOIN。在 CASE
中也使用 ELSE
SELECT L.[UserID], L.[UserGrade], L.[Operation], L.[OpDate],
CASE L.[UserGrade]
WHEN 2 THEN T.[teacherNAME]
WHEN 1 THEN A.[Adm_Name]
WHEN 3 THEN S.[studentNAME]
ELSE '' END [Name]
FROM [Log] L
LEFT JOIN Teacher T ON T.[teacherID] = L.[UserGrade]
LEFT JOIN Administrator A ON A.[Adm_ID] = L.[UserGrade]
LEFT JOIN student S ON S.[studentID] = L.[UserGrade]
计算条件列表和returns多个可能的结果表达式之一。
CASE 表达式有两种格式:
简单的 CASE 表达式将一个表达式与一组简单的
表达式来确定结果。
搜索到的CASE表达式
计算一组布尔表达式以确定结果。两个都
格式支持可选的 ELSE 参数。
CASE 可以用在任何允许有效表达式的语句或子句中。例如,您可以在 SELECT、UPDATE、DELETE 和 SET 等语句中以及 select_list、IN、WHERE、ORDER BY 和 HAVING 等子句中使用 CASE。
你应该检查这个Link
我需要 select 全部来自 Log
Table 并在 Case
如果 UserGrade =1 这是管理员用户,我需要 select 管理员名称 Log.User
如果 UserGrade =2 这是教师用户,我需要 select 教师姓名 Log.User
如果 UserGrade =3 这是学生用户,我需要 select 学生姓名 Log.User
我试试这个
select L.[UserID],L.[UserGrade],L.[Operation],L.[OpDate],
case
when L.[UserGrade]=2 then (select teacherNAME from Teacher ,[Log] where teacherID=[Log].[UserGrade] )
when L.[UserGrade]=1 then (select [Adm_Name] from Administrator ,[Log] where [Adm_ID]=[Log].[UserGrade] )
when L.[UserGrade]=3 then (select [studentNAME] from student ,[Log] where[studentID]=[Log].[UserGrade] )
end
from [Log] L ,Teacher , Administrator ,student
这是您的微调查询。带逗号的表是旧样式,避免使用它们并使用 JOIN。在 CASE
ELSE
SELECT L.[UserID], L.[UserGrade], L.[Operation], L.[OpDate],
CASE L.[UserGrade]
WHEN 2 THEN T.[teacherNAME]
WHEN 1 THEN A.[Adm_Name]
WHEN 3 THEN S.[studentNAME]
ELSE '' END [Name]
FROM [Log] L
LEFT JOIN Teacher T ON T.[teacherID] = L.[UserGrade]
LEFT JOIN Administrator A ON A.[Adm_ID] = L.[UserGrade]
LEFT JOIN student S ON S.[studentID] = L.[UserGrade]
计算条件列表和returns多个可能的结果表达式之一。
CASE 表达式有两种格式:
简单的 CASE 表达式将一个表达式与一组简单的 表达式来确定结果。
搜索到的CASE表达式 计算一组布尔表达式以确定结果。两个都 格式支持可选的 ELSE 参数。
CASE 可以用在任何允许有效表达式的语句或子句中。例如,您可以在 SELECT、UPDATE、DELETE 和 SET 等语句中以及 select_list、IN、WHERE、ORDER BY 和 HAVING 等子句中使用 CASE。
你应该检查这个Link