left join给左表加筛选条件,拼接sql
2015-12-06 14:48
357 查看
left join 就是无论on中的条件如何都会选出左表的数据,如果要屏蔽左表的一条数据,比如屏蔽左表deleted=1的数据怎么办?
这个问题可以通过拼接stringBuffer来实现。如下,需要注意的是需要给子查询起一个名字,不然就会报错Every derived table must have its own alias。
这个问题可以通过拼接stringBuffer来实现。如下,需要注意的是需要给子查询起一个名字,不然就会报错Every derived table must have its own alias。
StringBuffer sql = new StringBuffer();//拼接条件sql StringBuffer exeSql = new StringBuffer();//执行sql sql.append("select leave_note.id," //假条id + " stu.stu_name," //请假人姓名 + " content," //请假原因描述 + " type_code," //假条类型码(事假/病假) + " leave_note.deleted," + " code1.value type_value," //假条类型值 + " leave_note.add_time" //假条提交时间 + " from stu_leave_note leave_note" //假条表 + " left join stu_information stu on leave_note.stu_id=stu.id" //学生信息表 + " left join code code1 on code1.code=leave_note.type_code and code1.type='leave_note_type'"); //增加假条状态筛选 if(status_code.equals("checked")){ sql.append(" and leave_note.status_code='leave_note_status002' or leave_note.status_code='leave_note_status003'"); }else{ sql.append(" and leave_note.status_code='leave_note_status001' "); } //增加用户筛选 if(user_type_code.equals("user002")){ sql.append(" and leave_note.tea_id=? "); }else{ sql.append(" and leave_note.stu_id=? "); } exeSql.append("select leave_list.id," //假条id + " stu_name," //请假人姓名 + " content," //请假原因描述 + " type_code," //假条类型码(事假/病假) + " leave_list.deleted," + " type_value," //假条类型值 + " leave_list.add_time from("+sql + " ) as leave_list where leave_list.deleted=0"); //假条提交时间
相关文章推荐
- SQL数据库备份与还原的四个存储过程与一个函数
- mysql外键的学习
- mysql随机查询若干条数据
- DB2搭建SQL复制环境
- forget mysql pw problem
- mysql部分数据复制
- PL/SQL:ORA-00942
- psql-04数据类型(2)
- ubuntu15.04下设置mysql编码
- xml与数据库的区别
- window server 2008 R2 下oracle安装过程出现问题总结:
- android典型代码系列(二十九)------短信数据库操作相关
- 工作记录:南大gbase数据库的安装与postgresql数据库的对比(1)
- Oracle 11g R2 X64数据库安装
- mysql 优化建议(转)
- mysql乱码处理
- 关于提高MYSQL性能的几个经验
- 11、不登陆数据库执行mysql命令小结
- sql 对Date的转换
- python:redis简单操作