我有两张桌子。一个表包含毕业记录,第二个表包含毕业后记录。候选人必须毕业,但不一定要毕业。
我的问题是,如果候选人有毕业后记录,则选择毕业后记录,否则只选择毕业。
表1分度表
rollno | degree | division
--------------------------
001 | B.tech | 1st
002 | B.sc | 1st
003 | BA | 1st
表2毕业后表
rollno | degree | division
--------------------------
002 | M.sc | 1st
结果一定是
rollno | degree | division
--------------------------
001 | B.tech | 1st
002 | M.sc | 1st
003 | BA | 1st
最佳答案
您希望graduation_table
中没有行的所有行加上postgraduation_table
中的行。这可以用postgraduation_table
和not exists
查询来表示:
select gt.rollno, gt.degree, gt.division
from graduation_table gt
where not exists (select *
from postgraduation_table pg
where pg.rollno = gt.rollno)
union all
select rollno, degree, division
from postgraduation_table
order by rollno;
在线示例:http://rextester.com/IFCQR67320