数据库

sql select if 根据不同条件查询不同表返回一条sql语句

位置:首页 > 数据库 > SQL Server,2017-11-19 23:50
今天开发中使用了关于sql select if 根据不同条件查询不同表返回一条sql语句,开始不知怎么写,在网上找一些相关资料,成功操作完成


今天开发中使用了关于sql  select if 根据不同条件查询不同表返回一条sql语句,开始不知怎么写,在网上找一些相关资料,成功操作完成

下在是在csdn上找到的

现有一张请假表:
字段有,leave_id, type,reason, user_id, (分别是主键,对象类型,请假原因,请假人id)
---------------------------------------------------------------

学生表:
字段有,student_id, student_name, 
教师表:
字段有,teacher_id, teacher_name,
-------------------------------------------------------
现请假表里面有个对象类型字段,当为1时关联学生表,2时关联老师表,
------------------------------------------------------
现在怎么用一条sql语句查询出老师和学生的全部请假数据

查询的结果如下:

姓名--对象类型---请假原因
------------------------------------------------------------
王学生,学生,trghrigir
孙老师,老师,trghrigir
赵老师,老师,trghrigir
李学生,学生,trghrigir
张老师,老师,trghrigir
胡老师,老师,trghrigir
钱学生,学生,trghrigir
黎学生,学生,trghrigir

下面是解决的方法

select 
if(type=1,(select student_name from 学生表 where student_id=v.user_id),(select teacher_name from 教师表 where teacher_id=v.user_id)) as `姓名`
if(type=1,'学生','老师') as `对象类型`
v.reason as `请假原因`
from 请假表 v
最后本人在java中使用如下

list=db.findPage(Cishutag.class, "select if(leixingid=1,(select title from xinwen where id=v.cishuid),(select title from product where id=v.cishuid)) as title,v.cishuid,v.leixingid from cishutag v order by v.cishu desc", 0,10);
测试后成功!

以上就是sql  select if 根据不同条件查询不同表返回一条sql语句的方法例子。



TAGS:sql select if



猜你喜欢


NewHot手机版