-
2021-07-27 15:35:59
运算符
描述
= 等于
<> 不等于
> 大于
< 小于
>=大于或等于
<=小于或等于
IN等于值列表中的任何值
BETWEEN在某个范围内
LIKE搜索某种模式 相当于excel中的查询例子:
1.SELECT * FROM `第一页`WHERE `代码`=48
结果输出代码为48的信息
2.SELECT * FROM `第一页`WHERE `代码`BETWEEN 48 and 50
结果输出代码在48和50之间的数据(包含48和50)
3.SELECT * FROM `第一页`WHERE `单位名称` LIKE '北京%'
结果输出单位名称开头是北京的单位信息
4.SELECT * FROM `第一页`WHERE `单位名称` LIKE '%北京'
结果输出单位名称最后为北京的单位信息
5..SELECT * FROM `第一页`WHERE `单位名称` LIKE '%北京%'
结果输出单位名称中含有北京的单位信息
6.SELECT * FROM `第一页`WHERE `单位名称` LIKE '北京_'
结果输出单位名称开头是北京且只有名称只有三个字的单位信息
7.SELECT * FROM `第一页`WHERE `代码` in ('48','50')
输出结果为代码为48和50的单位信息
8.SELECT * FROM `第一页` WHERE `单位名称` LIKE '山西%' OR `单位名称` like '太原%'
输出结果为单位名称为山西和太原开头的企业信息
注:[]这个通配符 my sql不支持
更多相关内容 -
asp.net Parameters.AddWithValue方法在SQL语句的 Where 字句中的用法
2021-01-02 00:58:39strSql = “SELECT * FROM area Where [name] like @strWhere”;//这个就不好使 cmd.Parameters.AddWithValue(“@strWhere”, strWhere); string strWhere = “‘%美%'”; strSql = “SELECT * FROM area Where ... -
在sp_executesql中使用like字句的方法
2021-01-19 22:26:07–把LikeSql变量赋值,可以赋值成’%xxxxxxxxxxxx%’ declare @SelectSql nvarchar(128)–定义Sql语句,开始拼Sql set @SelectSql = ‘select * from Table where [Column] like @LikePar’;—使用@LikePar变量进行... -
SQL中where子句与having子句的区别小结
2020-09-09 06:32:16主要给大家介绍了关于SQL中where子句与having子句的区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 -
数据库中简单的SQL语句以及where字句
2019-08-03 15:45:53数据库中简单的SQL语句以及where字句 select * from dept; select * from emp; --查询表中指定字段中的值 select 字段名1,字段名2,.....from表名,其中*代表所有 select empno from emp; select empno,ename from...数据库中简单的SQL语句以及where字句
select * from dept;
select * from emp;
--查询表中指定字段中的值 select 字段名1,字段名2,.....from表名,其中*代表所有
select empno from emp;
select empno,ename from emp;
--给查询结果中的字段名使用别名
--在字段名后使用关键字 字段名 as “别名”
--作用:方便查看查询结果
--注意:as关键字可以省略不写,别名中没有特殊字符,双引号也可以不写
select empno 员工编号,ename"员工 姓名",job as 工作,mgr as "领导编号" from emp;
--连接符:select 字段名||‘字符’||字段名||‘字符’||...from 表名
--||为sql语句中的字符连接符,使用在select和from之间
--字符链接格式为:字段名 || ‘字符’ || 字段名
--注意:一个拼接好的连接在结果中是作为一个新的字段显示,可以使用别名优化字段显示
select empno || '的姓名是' || ename as"信息",job || '哈哈'||mgr from emp; (as在这里是作为的意思)
--去除重复 select distinct 字段名,字段名,...from 表名
--注意:去除重复的规则是按照行进行去除的,多行数据完全相同取其一
select distinct job,mgr from emp;
--排序
--单字段排序:asc为升序排列,desc为降序排列
--多字段排序:--select * from emp order by 字段名1,字段明2...
--先按照字段一排序,如果字段一的值相同,则按照字段二的值排序....
select * from emp order by empno desc;
select empno,ename,job from emp order by ename asc;
select * from emp order by empno,ename;--多字段排序(不特意规定,都是从小到大排列)
--字段的逻辑运算
select * from emp
select empno,ename,job,sal*2+1000,sal+comm from emp;
-----------------------------------------------------------------------------------------------------------------------------
--使用where字据查询筛选
--select 字段名,字段名,...from 表名 where 筛选条件
--单筛选条件
--使用运算符进行筛选 =,<,>,<=,>=,<>单个条件中
--注意:如果条件中的值为字符,必须使用单引号括起来
--查询所有员工的工资信息
select empno,ename,sal+comm as 薪资 from emp;
--查询SMITH的个人信息
select * from emp where ename='SMITH';
--查询SMITH的薪资信息,逻辑运算符=
select empno,ename,sal+comm from emp where ename ='SMITH';
--查询工资大于2000的员工信息,逻辑符'>'
select * from emp where sal>'2000';
--查询工资不等于3000的员工信息
select * from emp where sal<>3000 order by sal
--练习:
--查看工作等于CLERK的员工信息
select * from emp where job ='CLERK';
--查看工资大于1250的员工姓名和工作
select ename,job from emp where sal>1250
--查看工资小于等于2000的员工信息
select * from emp where sal<=2000;
--查看工资大于等于2000的员工信息
select * from emp where sal>=2000;
--查看工资不等于1500的员工信息
select * from emp where sal<>1500;
--查看入职信息在81年后员工的信息
--注意:oracle默认日期格式为 日-月-年 实例“03-1月-1981”
select * from emp order by hiredate;
select * from emp where hiredate>='01-1月-1981' order by hiredate;--多条件查询(where字句关键字:and,or,like,is null,is not null,in,between...and...)
----查询工资在2000到3000之间的员工信息
----使用and关键字,多条件同时成立的筛选使用and关键字进行条件连接
select * from emp where sal >=2000 and sal <3000;
使用betwnne... and...关键字进行条件连接,包含两头的数据
select * from emp where sal between 2000 and 3000;
----查询工作为SALESMAN,ANALYST,MANAGER的员工信息
--使用or关键字,进行或条件筛选
select * from emp where job='SALESMAN' or job='ANALYST' or job='MANAGER' order by job;
--使用in关键字,同样能进行或筛选,但是in中的内容只能为一个字段中的值
select * from emp where job in('SALESMAN','ANALYST','MANAGER');
----查询姓名中包含S的,以s开头的,以s结尾的,第二个字符为A的,名字中包含'_'的员工
select * from emp where ename like '%S%'--包含S的
select * from emp where ename like 'S%'--以S开头的
select * from emp where ename like '%S'--以S结尾的
select * from emp where ename like '_A%'--第二个字符为A的 ,'_'表示一个任意的字符,'%'表示任意多个的任意字符
select * from emp where ename like '%/_%' escape'/'--表示名字中包含'_'的员工
----查询有津贴的员工信息
------ select * from 表名 where字段名is null 字段值为null
------ select * from 表名 where字段名is not null 字段值不为null
------多的条件使用关键字and进行连接,筛选的是所有符合条件的数据
---------- select * from 表名where筛选条件1 and 条件2 and ...
select * from emp where comm is not null and comm>0共计四种运算符:算术>连接>比较>逻辑
-
SQL中的where子句不能使用字段别名(SQL语句中的执行顺序)
2019-11-21 17:42:42文章目录背景介绍问题解决方式一:将where中的别名换成表达式即可解决方式二:使用子查询的方式,然后就可以在where字句中调用了问题拓展总结 背景介绍 昨天在写sql脚本,与前端进行调试的时候发现,SQL中的字段别名...背景介绍
昨天在写sql脚本,与前端进行调试的时候发现,SQL中的字段别名在查询的时候竟然不识别,代码如下:
<select id="getDiscountUnionListByPage" resultType="Map"> select dis.merchant_id as merchantId, mer.name as merchantName, mer.address as merchantAddress, dis.id as couponId, discount_price as couponPrice, activity_end_date as couponEndDate, discount_name as couponName, discount_start as couponStart, discount_rest as couponNum, ROUND(6378.138*2*ASIN(SQRT(POW(SIN((#{longitude}*PI()/180-mer.longitude*PI()/180)/2),2) +COS(#{longitude}*PI()/180)*COS(mer.longitude*PI()/180)*POW(SIN((#{latitude}*PI()/180-mer.latitude*PI()/180)/2),2)))*1000) AS distance from tb_discount dis left join tb_union_merchant mer on dis.merchant_id = mer.id <where> del_flag = '0' and putaway_flag = '1' and vouchers_create = '3' and is_union ='1' and mer.industry_first = #{industryFirst} and mer.industry_twice != #{industrySecond} and distance <= 3000 </where> order by distance asc </select>
其中distance为字段别名,表示的是根据经纬度计算的距离,报错如下:
问题解决
很显然,这里的distance别名是不被识别的,当时的紧急做法就是将脚本里面的distance都换成表达式,果然问题得到了解决,但是很纳闷的是为什么distance字段不能被识别呢(其实,这里面有两个distance,where语句中的distance是不被识别的,但是order by的是可以识别,当时以为orderby 也不能识别别名字段,浪费了好多时间查资料)。
解决方法:
方式一:将where中的别名换成表达式即可解决
方式二:使用子查询的方式,然后就可以在where子句中调用了
SELECT type,id,merchantId,name, address,industryFirst,productPrice,discountPrice,integral,distance,volume from ( SELECT '1' AS type,product.id AS id,product.merchant_id merchantId,product.product_name AS name, '' AS address, '' AS industryFirst, product.product_price AS productPrice,product.discount_price AS discountPrice,product.exchange_integral AS integral, ROUND(6378.138*2*ASIN(SQRT(POW(SIN((#{longitude}*PI()/180-longitude*PI()/180)/2),2) +COS(#{longitude}*PI()/180)*COS(longitude*PI()/180)*POW(SIN((#{latitude}*PI()/180-latitude*PI()/180)/2),2)))*1000) AS distance, COUNT(record.id) AS volume FROM tb_union_merchant_product product LEFT JOIN tb_union_merchant merchant ON product.merchant_id = merchant.id LEFT JOIN tb_union_merchant_examine examine ON merchant.id = examine.merchant_id LEFT JOIN tb_union_product_record record ON product.id = record.product_id WHERE distinguish= #{distinguish} AND merchant.status ='1' AND merchant.longitude IS NOT NULL AND merchant.latitude IS NOT NULL AND examine.examine_status='1' AND product.product_name LIKE '%${keyword}%' and product.product_states = '1' and product.del_flag = '0' GROUP BY product.id order by distance ,volume DESC
问题拓展
为什么where子句中无法使用到字段别名作为筛选条件呢
- 这就涉及到了SQL语句的整个执行顺序,如下表:
(7) SELECT
(8) DISTINCT <select_list>
(1) FROM <left_table>
(3) <join_type> JOIN <right_table>
(2) ON <join_condition>
(4) WHERE <where_condition>
(5) GROUP BY <group_by_list>
(6) HAVING <having_condition>
(9) ORDER BY <order_by_condition>
(10) LIMIT <limit_number>执行顺序依次为:
- from :先确定查询范围
- ON:确定多表联合查询的条件
- JOIN:指定联合哪些数据表
- WHERE :全表查询的筛选条件,生成第一个结果集
- GROUP BY:分组条件,对第一个结果集进行分组,得到第二个结果集
- HAVING :过滤条件,与group by进行连用,对第二个结果集中的每组数据,进行筛选过滤,得到第三个结果集
- SELECT:指定获取的列项,得到第四个结果集
- DISTINCT :对指定列进行去重操作
- ORDER BY:对结果集按照指定字段进行排序整理
- LIMIT:对最终结果集进行截取,一般和offset连用,可用于分页
所以,以此可以看出,为什么在where语句中没法使用查询列的别名进行过滤了,因为调用where子句的时候,select子句还没有开始执行,所以不识别,同理,order by子句中是可以使用
在查询mysql的字段别名使用的时候,翻到了mysql的官方文档,里面对别名的使用场景进行了简要的介绍:
意思就是别名可以使在order by、having、group by 子句中,但是根据上面的SQL执行过程,很明显group by 和 having都在select之前啊,这里值得注意的是,mysql对group by 进行了优化加强,所以在group by子句中可以使用别名进行分类,但是其他数据库还是遵循着SQL的执行顺序总结
都是因为字段别名的问题展开的一系列思考,大多也还是基础知识吧,稍微再巩固一下,继续加油啦各位!
-
sql中如何在where字句里截取某个字段的前几位字符
2021-01-20 02:35:17展开全部sql中在32313133353236313431303231363533e59b9ee7ad9431333433663037where字句里截取字符方法如下:1、如果是sqlserver:where left(p.end_time,4) = '2012'。2、如果是Oracle:where substr(p.end_...展开全部
sql中在32313133353236313431303231363533e59b9ee7ad9431333433663037where字句里截取字符方法如下:
1、如果是sqlserver:where left(p.end_time,4) = '2012'。
2、如果是Oracle:where substr(p.end_time,0,4) = '2012'。
举例:
1、oracle: 'where substr(字段名,1,2)='''123''''
2、sqlserver: 'where substring(字段名,1,2)='''123''''
扩展资料:
sql中,常用函数介绍:
1、AVG():返回平均值
2、COUNT():返回行数
3、FIRST():返回第一个记录的值
4、LAST():返回最后一个记录的值
5、MAX():返回最大值
6、MIN():返回最小值
7、SUM():返回总和
8、UCASE():将某个字段转换为大写
9、LCASE():将某个字段转换为小写
10、MID():从某个文本字段提取字符
11、LEN():返回某个文本字段的长度
12、ROUND():对某个数值字段进行指定小数位数的四舍五入
13、NOW():返回当前的系统日期和时间
14、FORMAT():格式化某个字段的显示方式
15、INSTR():返回在某个文本域中指定字符的数值位置
16、LEFT():返回某个被请求的文本域的左侧部分
17、RIGHT():返回某个被请求的文本域的右侧部分
-
mysql-如何在SQL查询中使用min作为条件
2021-04-19 07:47:04猫用min作为条件where语句在哪里中断,但我无法修复它select category, count(*) as number_of_catsfrom bookswhere number_of_cats > min(number_of_cats)group by categoryorder by category;解决方法:有子查询... -
SQL语句Where中不能使用别名作为判断条件
2021-03-14 00:34:02当我们使用某个表达式作为输出的一列时,我们无法再Where条件中直接使用该列作判断条件.例如下面的SQL语句:selectid,(c1+c2)assfromt1wheres>100SQL Server 报错:"列名 s 无效"当然,写成selectid,(c1+c2)assfromt1... -
MySQL——where字句常用的查询条件及用法
2020-09-30 09:56:44where字句常用的查询条件 查询条件 谓词 比较 = , > , < , >= , <= , (<> , !=不等于) 确定范围 BETWEEN AND(相当于闭集合[BETWEEN,AND]) , NOT BETWEEN AND(不属于闭集合[BETWEEN,... -
sql where子查询5中字句的使用顺序
2015-10-28 02:57:59where-->group by-->having-->order by-->limit 转载于:https://blog.51cto.com/ccdxdb/1707068 -
SQL之WHERE语句
2021-04-21 05:39:02SQL语句是数据库查询语句,可以应用在各种数据库操作软件中,比如Mysql,Oracle,因此SQL语句学一套就基本可以通用了。这篇文章主要总结一下Where的用法,文章持续更新。一般的结构查询语句的结构如下:SELECT *FROM... -
sql 中WHERE字句中使用case when then
2013-09-04 10:38:00在程序开发过程中一段查询语句,where字句中使用到case when then,在此记录下 WHERE ACTUALNUMBER!=(CASE WHEN APPROVAL_DEPT IS NOT NULL THEN APPROVALNUMBER WHEN APPROVAL_PERSON... -
sql语句之where字句学习笔记
2019-03-16 15:25:31sql语句之where字句学习笔记 我们先说一下wherer字句作用: 限制表中的数据返回 符合where后面的条件的数据就会被选中,不符合where条件的语句会被过滤掉 1.两个极限条件 where 1 = 1 where 1 = 2 自我感觉一般... -
MySQL - 如何提高SQL的查询效率(where条件优化)
2018-11-25 22:37:40目录 说在前面 35条优化规则 总结 说在前面 整天说SQL优化,SQL优化,到底怎么才...对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 (2)需要当心的WHERE子句 ... -
SQL学习笔记——WHERE子句&比较运算符
2022-02-05 22:25:42得到1990年以后出生的顾客 select * from customers where birth_date>'1990-01-01' xxxx-xx-xx属于SQL中标准的、默认的表示日期的格式;日期不是字符串,但是也要用引号 4.练习:得到今年的订单 -- get the orders ... -
where字句常用的查询条件
2019-06-21 23:09:42 -
数据库SQL语句中 where,group by,having,order by的执行顺序
2021-02-22 12:28:45一、SQL查询 1.查询中用到的关键词主要包含六个,并且他们的顺序依次为: select>from>where>group by>having>order by 其中select和from是必须的,其他关键词是可选的,这六个关键词的执行顺序与sql... -
4、Oracle查询语句-where字句
2017-11-01 22:08:071、where字句的作用 限制表中数据的返回,符合where条件的数据被选中,不符合where条件的数据被过滤掉。 2、where的语法格式 select 字段名 from 表名 where 条件; 3、两个极限条件 1 = 1 恒等 永真 1 != 1 恒假 ... -
SQL里面的where字句是不是不可以跟函数一起使用啊?
2015-12-07 03:16:23where sal=min(sal) 例如这一句是不是就是不合法的? -
关于MySQL数据库中使用where语句进行的条件查询
2021-04-08 15:22:05特别是web项目,基本上都是使用 mysql 数据库,还有一些较为常用的关系型数据库如: oracle (用在像是银行、电信等大型项目)、server sql (一般用在微软开发语言的项目中)、 sqlite (应用在移动端),和非关系... -
SQL学习(四)Where语句中的各种匹配方式
2019-09-25 21:09:16在where语句中,我们需要制定各种条件,条件的各种组合需要用到不同的关键字 一、单条件 如:select * from ticket where name='测试' 二、多条件 1、和(and) 如:select * from ticket name=’测试' ... -
SQL 面试题:WHERE 和 HAVING、ON 有什么区别?
2020-04-09 07:42:16SQL 中WHERE和HAVING的区别在于:WHERE子句在GROUP BY分组和聚合函数之前对数据行进行过滤;HAVING子句对GROUP BY分组和聚合函数之后的数据行进行过滤。 SQL 中WHERE和ON的区别在于:对于内连接查询,WHERE和ON中的... -
SQL语句理解左右连接和where
2020-11-24 09:50:06这里以左连接 left join 为例,说明 on 后面的条件与 where 后面条件的区别 创建测试表:TAB_1、TAB_2 create table TAB_1 as ( select 'c' as A,'d' as B,'3' as C,'4' as D from dual union all select 'a' ... -
SQL中的查询命令
2022-01-11 09:58:04SQL:Structured Query Language 结构话查询语言 第一个命令:(命令的结尾必须是;, sql命令是不区分大小写的) show databases; 列出服务器管理的数据库 第二个命令:(数据库名必须是唯一) use +数据库... -
SQL中的 聚合函数 ,where ,having
2019-08-28 16:19:08“Where”是一个约束声明,在查询数据库的结果返回之前对数据库中的查询条件进行约束,即在结果返回之前起作用,且where后面不能使用“聚合函数”; “Having”是一个过滤声明,所谓过滤是在查询数据库的结果返回... -
SQL语句的where字句表达式顺序影响性能吗?
2015-09-09 13:45:47[size=medium]比如下面的SQL语句性能有区别吗? select * from PEOPLE where FirstName="F" and LastName="L" select * from PEOPLE where LastName="L" and FirstName="F&... -
SQL查询语句中select from where group by having order by的执行顺序
2017-12-14 20:57:43原文:...select>from>where>group by>having>order by 其中select和from是必须的,其他关键词是可选的,这六个关键词的执行顺序与sql语句的书写顺序并不是一样的,而是按照下面的顺序来执行: f -
SQL常用语句,子查询整理
2021-01-19 09:25:13一、SQL子查询语句1、单行子查询select ename,deptno,salfrom empwhere deptno=(select deptno from dept where loc='NEW YORK');2、多行子查询SELECT ename,job,salFROM EMPWHERE deptno in ( SELECT deptno FROM ...