一个电话号码表,其中有一个时间字段time,还有两个字段status=1和call_result=1判断这个号码我是否操作过。假如7月10日修改了我是否打过这个号码的这个后台判断,现在只有status这一个字段判断。所以我提取已操作数据的时候,如果在10号之前,那么需要status和call_result两个一起判断;如果是10号之后只需要status这一个字段判断。怎么在where条件后面控制这个,时间已经设定了一个变量可以作对比。因为这个数据提取也是在一个大where里面的条件之一,不能在整个外面控制。求教大神!
1、从 tblTest 表中获取出 itemcode = 'Item001' 的记录行,就可以使用where的相等(=)条件,select * from tblTest where itemcode = 'Item001'。
2、从 tblTest 表中获取出 itemnum > 50 的记录行,就可以使用where的大于(>)条件。大于条件还可以使用大于等于(>=),select * from tblTest where itemnum > 50。
3、从 tblTest 表中获取出 itemnum < 50 的记录行,就可以使用where的小于(<)条件。小于条件还可以使用小于等于(<=),select * from tblTest where itemnum < 50。
4、从 tblTest 表中获取出 itemnum 不等于 itemprice 的记录行,就可以使用where的不等于(!= 或者 <>)条件,这两种不等于符号都是可以的。
5、从 tblTest 表中获取出 itemname 包含“项目”两个字的记录行,就可以使用where的模糊(%)条件,百分号在左侧表示左边可以是任意值,百分号在右侧表示右侧可以匹配任意值,百分号也可以两边都有。
如下参考:
1.从tblTest表中获取itemcode='Item001'的记录行,然后使用where的等式(=)条件,select*fromtblTestwhereitemcode='Item001'如下图。
2. 如果从tblTest表中获得itemnum > 50的记录行,则可以使用where greater than(>)条件。也可以使用大于或等于(>=),select * from tblTest where itemnum > 50,如下图。
3.从tblTest表中获取itemnum < 50的记录行,您可以使用where的小于(<)条件。小于条件也可以使用小于或等于(<=),select * from tblTest where itemnum < 50如下图。
4.从tblTest表中获取itemnum不等于itemprice的记录行,可以使用where's not equal to (!等于或小于>如下图。
5.从tblTest表中获取包含itemname中单词“item”的记录行,然后可以使用where的fuzzy(%)条件。左边的百分号表示左边可以是任何值,右边的百分号表示右边可以匹配任何值,百分号可以是两边的,如下图。
本回答被网友采纳你可以根据时间参数来判断:
如果时间>=你的时间 且 status = 1 这个条件 ;
如果时间<你的时间 且 status = 1 and call_result = 1这个条件 ;
1 和 2 两个是或的关系
具体sql参考:
select * from table1 where 1=1 and ( (time>=v_date and status =1 ) or其中:table1 是你的表,v_date 是你的时间变量
--希望对你有帮助!!
追问这个我看到了,如果我不加1=1怎么样
追答可以不加的,我只是习惯而已。
本回答被提问者采纳oracle怎么在where后面再作判断条件
1、从tblTest表中获取出itemcode=Item001的记录行,就可以使用where的相等(=)条件,select*fromtblTestwhereitemcode=Item001。\/iknow-pic.cdn.bcebos.com\/7dd98d1001e93901a407502d74ec54e736d19698"target="_blank"title="点击查看大图"class="ikqb_img_alink">\/iknow-pic.cdn.bcebos.com\/7dd...
oracle怎么在where后面再作判断条件
1. 当你需要查找特定值时,如获取itemcode为"Item001"的记录,可以这样编写SQL语句:`SELECT * FROM tblTest WHERE itemcode = 'Item001'`。这将返回所有itemcode字段值为"Item001"的行。2. 如果你想筛选itemnum大于某个数值,例如50,可以使用大于(>)或大于等于(>=)的条件,例如:`SELECT *...
oracle sql语句中 先执行where还是order by
从感觉上来说,是先执行WHERE查询符合条件的结果集,再执行ORDER BY,把查询出来的结果集进行排序。此问题设计到RDBMS内部实现及其查询优化的问题,你执行一条SQL语句时,RDBMS的SQL解析器会生成相应的执行树,按照执行树的顺序对底层存储的数据操作,而后返回处理结果。这里先执行哪一个子句、后执行哪一个...
在oracle中where 子句和having子句中的区别
where 是先决条件,having是分组后的后决条件。如果你写了一个where A=1 group by B,那么该条件意思是对所有A=1的B值进行分组。也就是先where再分组。having是后决条件,比如在group by的时候执行了一个sum语句,sum后值有1,2,3,4,5,如果你只想取sum的值>3的,也就是说在sum之前,你并...
oracle 分组函数里可以嵌套吗?
先判断条件,对满足条件的行分组。 (2)HAVING 条件 HAVING是在分组后,只显示满足条件的行。 接着前面的例子,比如说,在分组后,只查id大于的信息: gyj@OCM> select id,count(*) from t3 where salary>5000 group by id having id>2; ID COUNT(*) --- --- 4 2 3 2 HAVING后的条件不能挪到WHERE中...
oracle 分页查询 为什么第一次子查询用rownum,第二次用rn,其他方式都不...
t1.*, rownum as "1234" from t1) where 1234 > 10 and 1234 <= 20; 查询为空,因为后一个1234会被认为是数字,而1234<= 20是一个恒false的条件 select * from (select t1.*, rownum as "1234" from t1) where "1234" > 10 and "1234" <= 20; 查询结果正常 ...
Oracle中的复合索引谁放在第一列上。
再换句话说:复合索引哪一列放在前面,需要看查询sql中where条件 :比如 staff_id=12345 and created_time >=trunc(sysdate)此时,要建立statff_id,created_time的 复合索引。也就是说,要结合查询语句中谓词(where条件)的写法。以上来源于:oracle DBA 手记 数据库诊断案例与性能优化实践,第216-224...
oracle的执行计划中表的链接方式有几种,分别适用在什么情况下啊_百度...
1、 Oracle首先选择一张表作为连接的驱动表,这张表也称为外部表(Outer Table)。由驱动表进行驱动连接的表或数据源称为内部表(Inner Table)。 2、 提取驱动表中符合条件的记录,与被驱动表的连接列进行关联查询符合条件的记录。在这个过程中,Oracle首先提取驱动表中符合条件的第一条记录,再与内部表的连接列进行...
如何在Oracle中导入额外的字段作为空值
第一个选择涉及了在源和目标数据库之间创建一个数据库链接,然后使用插入命令来只插入你需要的数据行和字段。这里是例子:INSERT INTO emp (empid, ename, email)SELECT empid, ename, emailFROMemp@remote_dbWHERE ... ;第二个选择可以使用SQL*Loader。你必须以SQL*Loader可以读取的格式从源表中读取...
oracle group by 性能优化
(非oracle中)on、where、having这三个都可以加条件的子句中,on是最先执行,where次之,having最后,因为on是先把不符合条件的记录过滤后才进行统计,它就可以减少中间运算要处理的数据,按理说应该速度是最快的,where也应该比having快点的,因为它过滤数据后才进行sum,在两个表联接时才用on的,所以在一个表的时候,就...