精华内容
下载资源
问答
  • 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不支持

    更多相关内容
  • strSql = “SELECT * FROM area Where [name] like @strWhere”;//这个就不好使 cmd.Parameters.AddWithValue(“@strWhere”, strWhere); string strWhere = “‘%美%'”; strSql = “SELECT * FROM area Where ...
  • –把LikeSql变量赋值,可以赋值成’%xxxxxxxxxxxx%’ declare @SelectSql nvarchar(128)–定义Sql语句,开始拼Sql set @SelectSql = ‘select * from Table where [Column] like @LikePar’;—使用@LikePar变量进行...
  • 主要给大家介绍了关于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

    共计四种运算符:算术>连接>比较>逻辑

                


     

    展开全文
  • 文章目录背景介绍问题解决方式一:将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 &lt;= 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中在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''''

    584dfd4c3ea19f3e6dcb36e9acd45489.png

    扩展资料:

    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():返回某个被请求的文本域的右侧部分

    展开全文
  • 猫用min作为条件where语句哪里中断,但我无法修复它select category, count(*) as number_of_catsfrom bookswhere number_of_cats > min(number_of_cats)group by categoryorder by category;解决方法:有子查询...
  • 当我们使用某个表达式作为输出的一列时,我们无法再Where条件直接使用该列作判断条件.例如下面的SQL语句:selectid,(c1+c2)assfromt1wheres>100SQL Server 报错:"列名 s 无效"当然,写成selectid,(c1+c2)assfromt1...
  • where字句常用的查询条件 查询条件 谓词 比较 = , > , < , >= , <= , (<> , !=不等于) 确定范围 BETWEEN AND(相当于闭集合[BETWEEN,AND]) , NOT BETWEEN AND(不属于闭集合[BETWEEN,...
  • where-->group by-->having-->order by-->limit 转载于:https://blog.51cto.com/ccdxdb/1707068
  • SQLWHERE语句

    2021-04-21 05:39:02
    SQL语句是数据库查询语句,可以应用各种数据库操作软件,比如Mysql,Oracle,因此SQL语句学一套就基本可以通用了。这篇文章主要总结一下Where的用法,文章持续更新。一般的结构查询语句的结构如下:SELECT *FROM...
  • sqlWHERE字句中使用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字句学习笔记 我们先说一下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子句 ...
  • 得到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查询 1.查询中用到的关键词主要包含六个,并且他们的顺序依次为: select>from>where>group by>having>order by 其中select和from是必须的,其他关键词是可选的,这六个关键词的执行顺序与sql...
  • 1、where字句的作用 限制表数据的返回,符合where条件的数据被选中,不符合where条件的数据被过滤掉。 2、where的语法格式 select 字段名 from 表名 where 条件; 3、两个极限条件 1 = 1 恒等 永真 1 != 1 恒假 ...
  • where sal=min(sal) 例如这一句是不是就是不合法的?
  • 特别是web项目,基本上都是使用 mysql 数据库,还有一些较为常用的关系型数据库如: oracle (用像是银行、电信等大型项目)、server sql (一般用微软开发语言的项目)、 sqlite (应用移动端),和非关系...
  • 在where语句,我们需要制定各种条件,条件的各种组合需要用到不同的关键字 一、单条件  如:select * from ticket where name='测试' 二、多条件  1、和(and)  如:select * from ticket name=’测试' ...
  • SQL 面试题:WHERE 和 HAVING、ON 有什么区别?

    万次阅读 多人点赞 2020-04-09 07:42:16
    SQL 中WHERE和HAVING的区别在于:WHERE子句GROUP BY分组和聚合函数之前对数据行进行过滤;HAVING子句对GROUP BY分组和聚合函数之后的数据行进行过滤。 SQL 中WHERE和ON的区别在于:对于内连接查询WHERE和ON的...
  • 这里以左连接 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:04
    SQL:Structured Query Language 结构话查询语言 第一个命令:(命令的结尾必须是;, sql命令是不区分大小写的) show databases; 列出服务器管理的数据库 第二个命令:(数据库名必须是唯一) use +数据库...
  • SQL中的 聚合函数 ,where ,having

    千次阅读 2019-08-28 16:19:08
    Where”是一个约束声明,在查询数据库的结果返回之前对数据库的查询条件进行约束,即在结果返回之前起作用,且where后面不能使用“聚合函数”; “Having”是一个过滤声明,所谓过滤是在查询数据库的结果返回...
  • [size=medium]比如下面的SQL语句性能有区别吗? select * from PEOPLE where FirstName="F" and LastName="L" select * from PEOPLE where LastName="L" and FirstName="F&...
  • 原文:...select>from>where>group by>having>order by 其中select和from是必须的,其他关键词是可选的,这六个关键词的执行顺序与sql语句的书写顺序并不是一样的,而是按照下面的顺序来执行: f
  • 一、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 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,328
精华内容 8,531
关键字:

在sql查询中使用where字句