LOCATE(substr,str), LOCATE(substr,str,pos) 第一个语法返回字符串str第一次出现的子串SUBSTR的位置.第二个语法返回第一次出现在字符串str的子串SUBSTR的位置,从位置pos开始. SUBSTR不在str中,则返回0. 例子 select * from esp_order WHERE is_deleted="N" AND user_id= 1 ORDER BY locate(`status`,'A,G,C')
最近的一个项目,使用存储过程对报表进行分析,其中有一些名称需要根据指定顺序显示,而其名称对应的编号并不是按照要求的顺序排列的.通过上网查找资料,发现sql 中的charindex函数可以帮助解决这个问题.但是这样做也有一个弊端,当添加新的名称后,可能就会达不到想要的结果了,没有通用性. 给出一个例子: create table test( id1 varchar(10), id2 varchar(10), name varchar(20) ); insert into test value
我们通常须要依据客户需求对于查询出来的结果给客户提供自己定义的排序方式,那么我们通常sql须要实现方式都有哪些,參考很多其它资料总结例如以下(不完好的和错误望大家指出): 一.假设我们仅仅是对于在某个程序中的应用是须要依照例如以下的方式排序,我们仅仅需在SQL语句级别设置排序方式: 1.依照oracled的默认方式排序:select * from table_name order by col_name (desc|asc);(默觉得升序或无序对于升降仅仅有在数字字段); 2.依照自己定义的
2012-02-07 19:39 先where 条件1,再 group by 条件2再 order by 条件3 如果声明了 GROUP BY 子句,输出就分成匹配一个或多个数值的不同组里. 如果出现了 HAVING 子句,那么它消除那些不满足给出条件的组. 如果声明了 ORDER BY 子句,那么返回的行是按照指定的顺序排序的. 如果没有给出 ORDER BY,那么数据行是按照系统认为可以最快生成的方法给出的. 虽然 SELECT 语句的完整语法较复杂,但是其主要的子句可归纳如下: SELEC
1.Group By 和 Having, Where ,Order by这些关键字是按照如下顺序进行执行的:Where, Group By, Having, Order by. 首先where将最原始记录中不满足条件的记录删除(所以应该在where语句中尽量的将不符合条件的记录筛选掉,这样可以减少分组的次数)然后通过Group By关键字后面指定的分组条件将筛选得到的视图进行分组 接着系统根据Having关键字后面指定的筛选条件,将分组视图后不满足条件的记录筛选掉最后按照Order By语句对视
在项目当中用到Sphinx的时候,很多人遇到了这样的问题:使用mysql+Sphinx检索出了相关度的ID后,如何按照指定ID在Mysql中进行排序呢?这里是我在项目中的解决方法: 1 SELECT * FROM documents WHERE id IN (5,3,6,1) ORDER BY FIELD(id,5,3,6,1); 或者: 1 SELECT * FROM documents WHERE id IN (5,3,6,1) ORDER BY substring_index((id,5,
当MySQL查询时排序的字段不是数字时而是汉字的时候也可以用when then 来指定排序. 列如yewu_check表的status 字段不是0,1,2而是汉字待办,已办,退回.可以如下写法: SELECT * FROM yewu_check ORDER BY CASE WHEN STATUS='待办' THEN 2 WHEN STATUS='已办' THEN 1 ELSE 0 END DESC 结果:
直入主题!看看下面这SQL会不会报错?如果报错应该是什么错误! --说明:黑色字体都是列SELECT application_id, index_num, num, amount FROM `credit_repayment_plan` WHERE status = 'unclosed'GROUP BY application_id ORDER BY gmt_create ; MySQL下应该没啥问题,比较智能! 但是针对于oracle 数据库竟然报错:group by 表达式出错! 这就比较尴
代码示例: in(逗号分隔开的值列表) 释:是否存在于值列表中 --------------------- 示例: select * from test where id in(3,1,5) order by find_in_set(id,'3,1,5'); select * from test where id in(3,1,5) order by substring_index('3,1,2',id,1); --------------------------- 对于in查询并且按照此顺序来
今天遇到个小问题 本来是很基础的问题 应该说 基础知道掌握的不牢 好了不说 错误 语句 : select a.a1 from table a where order by a.a1 group by a1 正确的语句是: select a.a1 from table a where group by a1 order by a.a1 原因 :group by 比order by先执行,order by不会对group by 内部进行排序 虽然 SELECT 语句的完整语法较复