我有一张类似于此的表
Id | student_name | grade_Sem_A | grade_sem_b
我需要得到下表作为结果
Student_name | grade | Semester
为此,我使用以下查询
select student_name, grade_sem_a as grade, 'A' as sem
union all
select student_name, grade_sem_b as grade, 'B' as sem
问题是它查询完全相同的行两次,这是不必要的,而我使用的表有大量的行,并且这些查询中的每一个都需要很长时间才能打开,是否有办法准确获取相同的结果没有使用union all并且两次查询相同的数据?
答案 0 :(得分:1)
我建议:
select student_name, grade_sem as grade, sem
from your_table,
(
select 'A' as sem from dual
union all
select 'B' as sem from dual
) t;
我的解释说明主表的访问权限已经完成一次。
希望它有所帮助。