怎么给已有的SQL语句用程序添加查询条件

问题描述

比如如下的SQL语句:select sum(f1),f2 from (select a.a1 as f1, a.a2 as f2, a.a3 as f3 from aleft join select b.b1 as f1,b.b2 as f2, b.b3 as f3 from bunion all select c.c1 as f1,c.c2 as f2, c.c3 as f3 from c where c.c1 < 100) group by f2要程序实现给查询语句添加条件 a.a1 > 10、b.b2 = 5 、c.c1 < 100达到下面的效果:select sum(f1),f2 from (select a.a1 as f1, a.a2 as f2, a.a3 as f3 from aleft join select b.b1 as f1,b.b2 as f2, b.b3 as f3 from bwhere a.a1 > 10 and b.b2 = 5union all select c.c1 as f1,c.c2 as f2, c.c3 as f3 from c where c.c1 < 100) group by f2怎么实现这样的效果请指点一下。

解决方案

已有的SQL文如果可以作为一个String取到的话,那就好办了。按照你自己写出来的那样,把那个String断开,在union all的前面插入你想要的条件。再把这个修改过的SQL文执行下就好了。如果不能取到的话,那基本就没戏了。除非让那条SQL文事先埋下用于扩展的参数。比如类似下面...left join select b.b1 as f1,b.b2 as f2, b.b3 as f3 from b #{将来可能要添加的条件参数}union all ...
解决方案二:
就是一个SQL语句的动态拼装么。根据传进来的条件,动态生成SQL语句。只要搞清楚哪些是不变的,哪些是变得。自然就写出来了。

时间: 2024-10-31 13:24:45

怎么给已有的SQL语句用程序添加查询条件的相关文章

java-为什么我在Java类中执行SQL语句,程序没错,而数据库却没执行??

问题描述 为什么我在Java类中执行SQL语句,程序没错,而数据库却没执行?? 解决方案 不知道画了删除线是什么意思,你确认这些代码有效么 解决方案二: 你用的什么啊?Hibernate?还是别的框架啊?Hibernate的话,可能是事务没有提交,你执行flush方法就可以了 解决方案三: 代码可以贴全一点吗?看不到关键部分 解决方案四: 代码内容太少了,你的Sqlca是个什么,最起码给个声明. 解决方案五: 你的sqlca是什么啊? 解决方案六: executeSQL方法问题 这个方法只能是查

access数据库-ADO操作Access 的SQL 语句怎么用Access 查询设计的SQL 视图改造一下就能使用

问题描述 ADO操作Access 的SQL 语句怎么用Access 查询设计的SQL 视图改造一下就能使用 ADO操作Access 的SQL 语句怎么用Access 查询设计的SQL 视图改造一下就能使用. 解决方案 Access的试图只能内部VBA使用,你得把完整得SQL复制到程序中,作为ADO的Open()或Execute()方法的参数调用.

SQL语句实现子孙树查询经典实例

 下面介绍的SQL语句非常经典,该SQL语句实现子孙树查询,该SQL语句可以直接在查询分析器中执行,供您参考. --生成表   create table MENU(id int,mname char(50),parent int)     --插入数据   insert into MENU    select 1,'新闻',Null union all   select 2,'房产',Null union all   select 3,'科技新闻',1 union all   select 4,

oracle goldengate-mybatis 打印的Sql语句可以再数据库查询到数据,但是没有返回结果?【急】

问题描述 mybatis 打印的Sql语句可以再数据库查询到数据,但是没有返回结果?[急] <select id="selectPageTblSfFiles" parameterType="TblSfFile" resultMap="TblSfFileResult"> SELECT <include refid="TblSfFile_columns" /> FROM TBL_SF_FILE WHERE

使用一条sql语句实现多表查询

问题描述 使用一条sql语句实现多表查询 假设有这样3张表: 学生表S (id,Tid,name,sex,age) 教师表T (id,Sid,name,sex,age) 成绩表R (id(学生的id),result(成绩)) 怎样使用一条sql查询成绩大于90的男学生的男性老师的姓名 解决方案 select * from R inner join S on R.id=S.Sid inner join T on xxxxxx where result>90 你学生和老师好像没有对应关系,所以第二个

sql-如何用SQL语句通过1去查询N?

问题描述 如何用SQL语句通过1去查询N? 解决方案 只需要通过1的ID查询N的记录就好了! 解决方案二: sql 语句的执行顺序(1)逻辑查询的各个阶段SQL中的n+1次select语句查询问题SQL中的n+1次select语句查询问题 解决方案三: 这个不就是普通的两张表自动关联而已嘛?通关关联两张表,把结果集放到java的容器里面,每条数据就代表的这种关系了啊,至于要展示成这样,就要看你报表怎么画了啊,ORACLE每条数据呈现的都是这两个表的一种对应关系,比如说1 研发部 1 刘备1 研发

求一条sql语句,单表查询的

问题描述 求一条sql语句,单表查询的 表结构 (姓名,课程,成绩) 现在求获的该表总成绩最高学员的名字 解决方案 mysql 数据库select sum(成绩) as t from table group by 姓名 order by t limit 0,1 oracle数据库 select * from (select sum(成绩) as t from table group by 姓名 order by t) WHERE ROWNUM<=1 sqlserver数据库 select top

求问sql语句如何在添加中使用聚合函数

问题描述 求问sql语句如何在添加中使用聚合函数 设1表中有A.B两列,我想添加一组数据(c,d)进去(并没有C的值),其中c=A列最大值+1, 如何写sql语句? Ps.我知道如果只添加C可以这么写: insert into 1(A) select max(A)+1 from 1; 但是我想同时将数据d添加进去 解决方案 其实你已经知道方法了. insert into 1(A,B) select max(A),d from test; 在这里d要是一个常量值或者是test表的字段: 解决方案二

用非动态SQL Server SQL语句来对动态查询进行执行

此文章主要向大家讲述的是非动态SQL ServerSQL语句执行动态查询,在实际操作中我尝试在一个存储过程中,来进行传递一系列以逗号划定界限的值,来对结果集进行限制.但是无论什么时候,我在IN子句中使用变量,都会得到错误信息. 是否存在一种不执行动态SQL语句也能完成查询的方式呢? 我尝试在一个存储过程中传递一系列以逗号划定界限的值,以限制结果集.但是无论什么时候,我在IN子句中使用变量,都会得到错误信息.是否存在一种不执行动态SQL ServerSQL语句也能完成查询的方式呢? 专家解答: 这