我在表t中有一个名为type的字段,该字段用于显示角色,当键入等于学生时,它返回学生的名字。当键入等于教师时,它返回老师的名字。现在我已经离开了联接两个表,可以离开联接吗一张桌子?如何优化我的代码?

select t.*,(CASE t.type WHEN 'student' THEN tStudent.sname
ELSE tTeacher.tname END) as name
from t
left join t_student tStudent on t.typeid=tStudent .id
left join t_teacher tTeacher on t.typeid=tTeacher.id

最佳答案

这应该工作

select
   t.*,
   (case
   when t.type = 'student' then (select sname from tStudent where id = t.typeid)
      else (select tname from tTeacher where id = t.typeid)
      end) AS Name
from
     t

07-24 18:11