在个别业务中,可能需要根据关联表与主表中的关联关系进行连接才能得到想要的结果, 这有点像条件编译. 符合条件的才去做关联,不符合条件的就不做关联(或说让关联条件失败)
环境: oracle
请看代码:
create table A1(id number, val number);
create table A2(id number, type varchar2(2), val number, anyvalue varchar2(30));
insert into a1 values(1, 50);
insert into a1 values(1, 500);
insert into a1 values(2, 100);
insert into a1 values(2, 150);
insert into a1 values(3, 200);
insert into a1 values(3, 250);
insert into a1 values(4, 150);
insert into a1 values(4, 500);
insert into a2 values(1, '>', 100, '>100');
insert into a2 values(1, '<=', 100, '<=100');
insert into a2 values(2, '<', 150, '<150');
insert into a2 values(3, '<=', 200, '<=200');
insert into a2 values(4, '>=', 150, '>=150');
select * from a1;
select * from a2;
select * from a1, a2
where a1.id = a2.id
and (case a2.type
when '>' then
(case when a1.val > a2.val then 1 else 0 end)
when '>=' then
(case when a1.val >= a2.val then 1 else 0 end)
when '<=' then
(case when a1.val <= a2.val then 1 else 0 end)
when '<' then
(case when a1.val < a2.val then 1 else 0 end)
else
0
end) = 1;
drop table a1 purge;
drop table a2 purge;
加上执行结果,方便理解:
SQL> select * from a1;
ID VAL
---------- ----------
1 50
1 500
2 100
2 150
3 200
3 250
4 150
4 500
8 rows selected
SQL> select * from a2;
ID TYPE VAL ANYVALUE
---------- ---- ---------- ------------------------------
1 > 100 >100
1 <= 100 <=100
2 < 150 <150
3 <= 200 <=200
4 >= 150 >=150
SQL> select * from a1, a2
2 where a1.id = a2.id
3 and (case a2.type
4 when '>' then
5 (case when a1.val > a2.val then 1 else 0 end)
6 when '>=' then
7 (case when a1.val >= a2.val then 1 else 0 end)
8 when '<=' then
9 (case when a1.val <= a2.val then 1 else 0 end)
10 when '<' then
11 (case when a1.val < a2.val then 1 else 0 end)
12 else
13 0
14 end) = 1;
ID VAL ID TYPE VAL ANYVALUE
---------- ---------- ---------- ---- ---------- ------------------------------
1 50 1 <= 100 <=100
1 500 1 > 100 >100
2 100 2 < 150 <150
3 200 3 <= 200 <=200
4 150 4 >= 150 >=150
4 500 4 >= 150 >=150
6 rows selected
分享到:
相关推荐
主要介绍了ThinkPHP5联合(关联)查询、多条件查询与聚合查询,结合实例形式总结分析了thinkPHP5常用查询操作技巧,需要的朋友可以参考下
01.hive查询语法--基本查询--条件查询--关联查询.mp4
浅谈Linq to sql 的多表关联与动态条件查询
SQL根据表中某列队值选择关联不同的表,两种实现思路。case 及union
关联关系按条件查询细,在开发中常常会遇到,里面有几点常见的,已经解决方法
嵌_数据库条件查询关联变量显示.zip昆仑通态触摸屏案例编程源码资料下载嵌_数据库条件查询关联变量显示.zip昆仑通态触摸屏案例编程源码资料下载嵌_数据库条件查询关联变量显示.zip昆仑通态触摸屏案例编程源码资料...
织梦的多条件联合查询,例如京东的条件查询,以当前关键字的联合查询
(3Kettle)-----关联字典表的三种方法
通用Excel是一个用于构建信息系统的设计与运行平台,以Excel为操作界面,让用户自主管理、按需定制开发、不用编程,结合SQLServer数据库,通过在Excel中设计模板、表间公式、工作流等,即可轻松构建适合企业自身现状...
一个弹出窗口,用户可以自定义检索条件,通过检索条件来修改datagridview 关联的dataadapter的selectcommand,来达到过滤数据目的,目前较成功, 欢迎各位修改,更加完善 目前使用 sqlserver测试,单表,多表,含有...
总结关于 mysqldump 多张表筛选备份的使用方法
然后检查是否满足最小支持度条件,将其添加到更新后的模糊频繁属性集集合中;最后比较模糊频繁属性集和负边界的变化,得到最终更新后的模糊频繁属性集和相应的关联规则。采用实际飞行数据验证了该算法可以避免反复和...
本文实例讲述了ThinkPHP查询语句与关联查询用法。分享给大家供大家参考。具体如下: 在thinkphp框架页面中我们可以直接拼写sql查询语句来实现数据库查询读写操作,下面就对此加以实例说明。 普通查询除了字符串查询...
今天小编就为大家分享一篇laravel orm 关联条件查询代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
本文实例讲述了Yii2.0框架模型多表关联查询。分享给大家供大家参考,具体如下: 联表查询–hasMany: use app\models\User; $right = Right::findOne(2); //$user = User::find()->where(['right_id' => $right->...
3、其次,邻近指数表示两两产业同时具有比较优势的最小条件概率,反映出两两产业之间的技术关联水平。 4、根据邻近指数计算每个产业与给定地区内现有产业结构的技术关联程度,将邻近指数与产业专业化的区域结构联系...
论述了交通中,车辆跟踪的多目标数据关联与决策