首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL ORDER BY IF() 条件排序

在做sqlzoo的时候,碰到一个SQL的排序问题,他把符合条件的单独几行,可以放在查询结果的开始,或者查询结果的尾部 通过的方法就是IN语句(也可以通过IF语句) 自己做了个测试,如下,这个是表的所有内容...使用ORDER BY配合IF语句 比如我想将species为snake的行数,单独列出来,我可以这样查询 SELECT * FROM pet ORDER BY if (species='snake',0,1...正如上面一段说的,你可以把if 语句看成是独立的column,所以你也可以为他添加排序条件ASC或者DESC,当然默认是ASC,可以不写。...使用ORDER BY配合IN语句 上面一个是满足单个条件,返回0或者1,那如果需要用到一个范围呢?...这样的话,birth IN语句会进行判断,如果birth满足条件,返回1,不满足,返回0 所以,满足条件的两行,因为返回值是1,进行ASC排序的时候,就被放置在了最后。

3.7K50

Order By 排序条件中带参数的写法(Oracle数据库、MyBatis)

当sortWay 为 llpx 就 ORDER BY FORMAT ASC,为 btypx 就ORDER BY BID DESC ,为 zhpx 就 ORDER BY FORMAT ASC,BID DESC...= null and sortWay == 'zhpx'"> ORDER BY FORMAT ASC,BID DESC order> Order By 排序条件中带参数的写法 我还是无奈的用 ORDER BY ${sortSql} ,就是在后面传参数 拼sql的方式实现的。 我查到说${}是不安全的,推荐用#{}。...#{}是安全的,可以防止sql注入,会预预编译在参数外面加上单引号‘’ ,在order by后面参数加单引号会语句无效。只好还是用了${}。 这个问题怎么办 如果有人知道也非常希望给我说说。...后记 : ORDER BY {参数1} {参数2} 这种写法是OK的,只是要在代码中先过滤性验证前端传入的参数是不是合规的,作验证防止sql注入。

3.5K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SQL优化——order by优化

    1.1.order by优化1.1.1.知识点回顾在讲解order by优化前,先回顾一下order by的语法知识。...,例如根据age字段进行升序排序可以写成:SELECT * FROM tb ORDER BY age;SELECT * FROM tb ORDER BY age asc;如果多字段排序,当第一个字段值相同时...index,Using index的性能高于Using filesort,我们在优化排序操作时,尽量要优化为 Using indexUsing filesort : 通过表的索引或全表扫描,读取满足条件的数据行...from tb_user order by age, phone ;查看执行过程:explain select age,phone from tb_user order by age, phone ;...1.1.4.索引结构可视化如果查询时对age和phone都进行order by排序,且均指定为升序排序:explain select id,age,phone from tb_user order by

    70920

    SQL命令 ORDER BY(一)

    SQL命令 ORDER BY(一) 指定结果集中行排序的SELECT子句。...ORDER BY按逻辑(内部存储)数据值对记录进行排序,而不考虑当前的选择模式设置。 ORDER BY子句是SELECT语句中的最后一个子句。...在SELECT列表中执行窗口函数(包括窗口函数自己的ORDER BY子句)之后应用ORDER BY子句。 因此,窗口函数返回的值不受SELECT查询的ORDER by子句的影响。...一些被忽略的订单项值的例子是动态SQL ? 输入参数或嵌入式SQL:var主机变量、子查询、解析为数字、带符号的数字或括号中的数字的表达式。 列名 可以将列名指定为文字。...如果未指定ASC或DESC,则ORDER BY按升序对该列进行排序。 你不能指定ASC或DESC关键字使用动态SQL ? 输入参数或嵌入式SQL:var主机变量。

    2.6K30

    oracle基础|oracle排序用法|order by用法|where用法

    目录 前言 1、Order by 子句的使用 2、Where子句的使用 ---- 前言 前面给大家讲解了oracle的基础用法,大家可以点击这里回顾一下:oracle基础|oracle的认知|Select...子句的使用 语法: select col_name,... from tb_name where col_name 比较操作表达式 逻辑操作符 col_name 比较操作表达式 1) 作用:对SQL...语句返回的数据集进行筛选; 2) 位置:紧跟在from子句后 3) 内容:由一至多个限定条件组成,限定条件由表达式, 比较符, 字面值组成。...by dept_id; 2》sql比较操作符 between and:在什么范围之内 in(list):在一个列表中 like:模糊查询,即值不是精确的值的时候使用 通配符,即可以代替任何内容的符号...dept_id,title from s_emp where salary > 1000 and dept_id = 41 or dept_id = 44; 上面两个sql

    3.6K10

    SQL中order by的高级用法

    导读 为什么只有ORDER BY后面可以使用列别名 为什么不推荐使用ORDER BY后接数字来排序 为什么视图和子查询里面不能使用ORDER BY …… 小伙伴们在进行SQL排序时,都能很自然的使用到...今天给大家分享一些你可能不知道的ORDER BY用法。 一、ORDER BY返回的是游标而不是集合 SQL的理论其实是集合论,常见的类似求数据的交集、并集、差集都可以使用集合的思维来求解。...Student(ID,Name,Age) Student对象 二、ORDER BY子句是唯一能重用列别名的一步 这里涉及SQL语句的语法顺序和执行顺序了,我们常见的SQL语法顺序如下: SELECT DISTINCT...BY order_by_list> 而数据库引擎在执行SQL语句并不是从SELECT开始执行,而是从FROM开始,具体执行顺序如下(关键字前面的数字代表SQL执行的顺序步骤): (8)SELECT...BY 城市) Customers ORDER BY ID,Name,Address 结果如下: 因为T-SQL中带有ORDER BY的表表达式加了TOP后返回的是一个没有固定顺序的表。

    15210

    Oracle|NOT IN 条件查询【坑】

    剧情还原: 上周投产之后同事应该在某个页面查询的时候新增了一个not in的条件,结果导致列表部分数据不展示了,经排查发现原来是not in条件的问题。...where v.vst_tester ='w07387' and v.vst_note not in '已作废'; 预期结果:共6条数据 状态为空-1条 报告审批-5条 解决方案: 3.改进SQL...v.vst_tester ='w07387' and (v.vst_note not in '已作废' or v.vst_note is null ); ps:这种方案也能解决该问题,但是大家都知道Oracle...v_safe_testengineer a where a.vst_tester ='w07387' and a.vst_note = '已作废' and a.id = v.id) 结论: 大家拼接SQL...条件的时候如果字段值有NULL的情况不要使用not in 这种方式,还是建议大家使用 not exists 和 exists ,相对来说效率高一点。

    1.5K40
    领券