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

按asc排序,但当值0放在codeigniter中的最后一个位置时

在codeigniter中,按asc排序时,将值0放在最后一个位置的方法是使用ORDER BY子句和CASE语句来实现。

首先,我们需要使用ORDER BY子句来指定排序的字段,然后使用CASE语句来判断字段值是否为0,如果是0,则将其排在最后。

以下是一个示例的SQL查询语句:

代码语言:txt
复制
SELECT column_name
FROM table_name
ORDER BY CASE WHEN column_name = 0 THEN 1 ELSE 0 END, column_name ASC;

在上述查询语句中,column_name是要排序的字段名,table_name是要查询的表名。通过CASE语句,我们将字段值为0的记录排在最后,然后再按照升序排序其他记录。

对于codeigniter框架,可以使用其提供的数据库查询构建器来执行上述查询。以下是一个示例代码:

代码语言:txt
复制
$this->db->select('column_name');
$this->db->from('table_name');
$this->db->order_by("CASE WHEN column_name = 0 THEN 1 ELSE 0 END, column_name", "ASC");
$query = $this->db->get();
$result = $query->result();

在上述代码中,column_name是要排序的字段名,table_name是要查询的表名。通过order_by方法,我们使用CASE语句来指定排序规则,然后按照升序排序。

请注意,上述示例中的代码仅为演示目的,实际使用时需要根据具体的表名和字段名进行修改。

希望以上信息能够帮助到您!如果您需要了解更多关于codeigniter或其他云计算相关的知识,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL排序与分页详解

MySQL中使用 LIMIT 实现分页 格式: LIMIT [位置偏移量,] 行数 第一个 “位置偏移量” 参数指示MySQL从哪一行开始显示,是一个可选参数,如果不指定“位置偏移量”,将会从表中的第一条记录开始...(第一条记录的位置偏移量是0,第二条记录的位置偏移量是1,以此类推); 第二个参数“行数”指示返回的记录条数。...SELECT * FROM table LIMIT (PageNo - 1) * PageSize, PageSize; 注意:LIMIT 子句必须放在整个 SELECT 语句的最后!...但这样产生的结果和上述方法的并不一样。...ORDER BY annual_salary DESC, last_name ASC; 2.选择工资不在 8000 到 17000 的员工的姓名和工资,按工资降序,显示第21到40位置的数据 SELECT

1.9K60

2-DQL数据查询语言

查询的结果是一个虚拟表格 */ # 选中指定库 USE myemployees; # 查询表中的单个字段 SELECT last_name FROM employees; # 查询表中的多个字段...利用条件表达式筛选:基本的条件运算符有>,,>=,是等价的,但推荐采用表示不等) 2. 按逻辑表达式查询:逻辑运算符有: &&,||,!...不写的情况下默认升序 ORDER BY字句一般放在整个查询语句的最后(LIMIT字句除外) */ # 工资由高到低排序 SELECT * FROM employees ORDER BY salary...DESC; # 由低到高 SELECT * FROM employees ORDER BY salary ASC; # 排序+筛选 查询部门编号>=90的员工信息,按入职时间的先后进行排序...不写的情况下默认升序 ORDER BY字句一般放在整个查询语句的最后(LIMIT字句除外) */ # 工资由高到低排序 SELECT * FROM employees ORDER BY salary

59110
  • CI一些优秀实践

    最近准备接手改进一个别人用Codeigniter写的项目,虽然之前也有用过CI,但是是完全按着自己的意思写的,没按CI的一些套路。...通过设置 $config['global_xss_filtering'] = TRUE; 开启自动过滤POST和COOKIE中的跨站脚本攻击,但需要消耗一些资源。...当你需要更强大的工具时,你可以考虑使用 Object Relational Mapper ,就是鼎鼎大名的 ORM 了,遗憾的是,CodeIgniter 没有自带 ORM 库,不过也有一些其他很好的选择...CodeIgniter的工作过程 当有一个http请求时,如http://www.google.com/blog/,首先进入CI的引导文件index.php。.../,但推荐采用第二种方式,这样显得比较整齐;BASEPATH,网站文档的基本文件路径,写出来大概是htdoc/system/;到最后,index引导文件引入了codeigniter/codeigniter.php

    3.4K50

    数据库——排序与分页

    目录 排序数据 单列排序 多列排列 分页   分页原理 优点  MySQL 8.0新特性 排序数据 使用 ORDER BY 子句排序 ASC(ascend): 升序 DESC(descend):降序 ORDER...ASC; # 升序排列,结果差不多,就不展示了,默认升序排列 运行结果如下所示:         还可以使用列的别名来排序,具体如下所示: SELECT employee_id,last_name...MySQL中使用 LIMIT 实现分页 格式: LIMIT [位置偏移量,] 行数         第一个“位置偏移量”参数指示MySQL从哪一行开始显示,是一个可选参数,如果不指定“位置偏移 量...”,将会从表中的第一条记录开始(第一条记录的位置偏移量是0,第二条记录的位置偏移量是 1,以此类推);第二个参数“行数”指示返回的记录条数。...SELECT语句的最后,如下所示!

    50020

    qsort(),sort()排序函数

    排序之后的结果仍然放在原来数组中。...升序排列时,若第一个参数指针指向的“值”大于第二个参数指针指向的“值”,则返回正; 若第一个参数指针指向的“值”等于第二个参数指针指向的“值”,则返回零; 若第一个参数指针指向的...用法: sort(first,last) 在[first, last)中的元素进行排序按升序排列 注意:sort默认排序后是升序。如果要想按降序排列,需自己编写一个比较函数来实现。...对给定区间复制并排序 nth_element 找出给定区间的某个位置对应的元素 is_sorted 判断一个区间是否已经排好序 partition 使得符合某个条件的元素放在前面 stable_partition.../按升序排序 for(i=0;i<20;i++) cout<<a[i]<<endl; return 0; } 输出结果将是把数组a按升序排序,说到这里可能就有人会问怎么样用它降序排列呢

    2.1K80

    MySQL数据库:第四章:排序查询

    排序列表 asc|desc;——————④ 特点: 1、 asc代表的是升序。...升序是默认行为 desc代表的是降序。 2、排序列表支持单个字段、表达式、函数、别名,也支持以上的组合 3、order by子句一般放在查询语句的最后!...#1、通过单个字段进行简单的排序 #案例;按工资降序 SELECT * FROM employees ORDER BY salary DESC; #2、通过表达式进行排序 #案例:查询员工编号>110的姓名...查询员工的姓名和部门号和年薪,按年薪降序 按姓名升序 SELECT last_name,department_id,salary*12*(1+IFNULL(commission_pct,0)) 年薪 FROM...查询邮箱中包含 e 的员工信息,并先按邮箱的字节数降序,再按部门号升序 SELECT * FROM employees WHERE email LIKE '%e%' ORDER BY LENGTH(email

    72510

    【Java 进阶篇】使用 SQL 进行排序查询

    通常,我们可以使用 ASC(升序)和 DESC(降序)关键字来指定排序顺序。默认情况下,如果未指定排序顺序,将按升序进行排序。...下面是一个基本的排序查询示例,假设我们有一个名为 employees 的表: SELECT * FROM employees ORDER BY last_name ASC; 在上面的示例中,我们选择了...具体来说,我们将 “High” 重要性的产品排在第一位,然后是 “Medium”,最后是 “Low”。任何不在这些类别中的产品都按照默认顺序排在最后。...NULL 值处理 在排序数据时,我们还需要考虑如何处理 NULL 值。默认情况下,NULL 值通常会被排在排序顺序的最前面(升序排序时)或最后面(降序排序时)。...; 在上面的查询中,我们使用 NULLS LAST 来指定将 NULL 值放在排序结果的末尾。

    39520

    JavaScript 数组排序【六大方法】「建议收藏」

    冒泡排序 先遍历数组,让挨着的两个进行比较,如果前一个比后一个大,那么就把两个换个位置 数组遍历一遍以后,那么最后一个数字就是最大的那个了 然后进行第二遍的遍历,还是按照之前的规则,第二大的数字就会跑到倒数第二的位置...//if判断,如果数组中的当前一个比后一个大,那么两个交换一下位置 if(arr[j] > arr[j + 1]){ var tmp = arr[j]; arr[j] =.../*每次循环的时候都会把最后一个数字依次排在最后 面,循环了几次,意味着后面已经排好了几个数,而 那些已经排好的数也没必要再跟没排好的数进行比较 即:数组长度length-已经循环的次数i*/...选择排序 先假定数组中的第 0 个就是最小的数字的索引 然后遍历数组,只要有一个数字比我小,那么就替换之前记录的索引 知道数组遍历结束后,就能找到最小的那个索引,然后让最小的索引换到第 0 个位置...把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至 1 时,整个数据列恰好被分成一组,算法便终止。

    9.5K31

    MySQL性能优化(三):索引

    索引原理 如果一本新华字典假如没有目录,想要查找某个字,就不得不从第一页开始查找,一直找到最后一页(如果要找的字在最后一页),这个过程非常耗时,这种场景相当于数据库中的全表扫描的概念,也就是循环表中的每一条记录看看该记录是否满足条件...这个原理就是数据库中索引的原理。这里的按拼音查找、按部首查找是两种不同的查找方式,通过每种方式都能快速找到,在数据库中也有很多查找方式,称之为索引方法,有BTREE、HASH两种方式 ?...③索引字段 一个索引可以针对一个字段进行创建,也可以指定多个字段创建复合索引。...(ASC) 排序。...,没必要为整个值都创建索引 CREATE INDEX idx_username ON tbl_user(contnet(20) ASC); -- 复合索引:基于多个字段共同创建索引(区分度最大的字段放在前面

    77020

    MySQL【知识改变命运】05

    ,然后把where 条件进行筛选,然后把符合条件的记录放在临时表中,最终返回给客户端; 总分在 200 分以下的同学 我们都知道可以给列改名 那如果我们用修改后的别名作为条件可以使用吗?...: •WHERE条件中可以使⽤表达式,但不能使⽤别名 • AND的优先级⾼于OR,在同时使⽤时,建议使⽤⼩括号()包裹优先执⾏的部分 •过滤NULL时不要使⽤等于号(=)与不等于号(!...= , ) • NULL与任何值运算结果都为NULL 2:Order by 排序 语法: -- ASC 为升序(从⼩到⼤) -- DESC 为降序(从⼤到⼩) -- 默认为 ASC SELECT...ORDER BY {col_name | expr } [ASC | DESC], ... ; 按数学成绩从低到⾼排序(升序) 如果值为NULL呢?...查询同学各⻔成绩,依次按数学降序,英语升序,语⽂升序的⽅式显⽰ 类似于查字典,先会排math ,然后English,最后chinese 查询同学及总分,由⾼到低排序 我们思考个问题oder

    6610

    MySQL数据库:第四章:排序查询

    asc|desc;——————④特点:1、asc代表的是升序。...升序是默认行为desc代表的是降序。2、排序列表支持单个字段、表达式、函数、别名,也支持以上的组合3、order by子句一般放在查询语句的最后!...>110ORDER BY salary12(1+IFNULL(commission_pct,0));#3、通过别名进行排序#案例:查询员工编号>110的姓名、编号、年薪,并且按年薪降序SELECT last_name...;#4、通过函数的结果进行排序#案例:按姓名的长度进行升序SELECT LENGTH(last_name) len,last_nameFROM employeesORDER BY len;#5、支持按多个字段或多个表达式排序...查询员工的姓名和部门号和年薪,按年薪降序 按姓名升序SELECT last_name,department_id,salary12(1+IFNULL(commission_pct,0)) 年薪FROM

    17530

    SQL学习之SQL注入学习总结

    group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) ?...Count()---聚集函数,统计元祖的个数 ? rand()---用于产生一个0~1的随机数 ? floor()---向下取整 ?...基于时间盲注 基于的原理是,当对数据库进行查询操作,如果查询的条件不存在,语句执行的时间便是0.但往往语句执行的速度非常快,线程信息一闪而过,得到的执行时间基本为0。...但是如果查询语句的条件不存在,执行的时间便是0,利用该函数这样一个特殊的性质,可以利用时间延迟来判断我们查询的是否存在。这便是SQL基于时间延迟的盲注的工作原理 首先理解一下下面的语句: ?...剩余步骤和基于布尔的差不多,只是加了一个if判断语句进行判断 获取表名: ? 获取列名: ? 获取内容: ? 总结  本文总结了关于sql注入中的报错注入和盲注的一些原理以及测试方法。

    1.1K40

    MySQL 查询专题

    你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。...在指定一条 ORDER BY 子句时,应该保证它是SELECT语句中最后一条子句,否则这将报错 不限制是否使用非选择列进行排序 除了能用列名指出排序顺序外,ORDER BY 还支持按相对列位置进行排序,...下标从 0 开始,当根据不出现在 SELECT 清单中的列进行排序时,不能采用这项技术 如果想在多个列上进行降序排序,必须对每一列指定 DESC 关键字。...在升序排序时可以指定它。但实际上,指定 ASC 没有多大用处 在对文本性数据进行排序时,A 与a 相同吗?a位于 B 之前,还是Z之后?这些问题不是理论问题,其答案取决于数据库的设置方式。...所有这些限制以及更多的限制都可以用全文本搜索来解决。在使用全文本搜索时,MySQL不需要分别查看每个行,不需要分别分析和处理每个词。MySQL 创建指定列中各词的一个索引,搜索可以针对这些词进行。

    5K30

    Cassandra查询操作趟坑记录

    , bornDate asc, createDate desc ) 1.主键顺序查询限制 ​ cassandra主键是一个partition key主键和多个clustering key复合主键,而主键的查询顺序必须与定义表结构时一致...* from employee where bornDate in ('1999-01-01','1999-01-02') and name = '张三' 3.范围主键查询限制 ​ cassandra中范围查询只能放在条件查询的最后一个位置...='张三' and age >18 and phone = '123456' 当然也并不是不能这么做,不过那样必须加上ALLOW FILTERING,但并不建议这么做 也就是下面这种写法是没问题的 select...​ cassandra在创建表时设置一个排序规则,默认以此进行规则排序,如当前表,默认以正序age,正序bornDate和倒序createDate, 手动设置倒序只有一种方式,即将所有排序字段全部颠倒...5.排序对分区主键条件的限制 ​ cassandra中只要使用排序,无论是使用默认排序规则还是相反排序规则,分区主键只能使用等于查询,(可以使用in,但是只能IN一个数据), ​ 所以这样写就是错误

    3.2K20

    SQL命令 ORDER BY(一)

    ORDER BY子句是SELECT语句中的最后一个子句。 它出现在FROM、WHERE、GROUP BY和HAVING子句之后。...2,1 列号指的是SELECT子句列表中的位置。...它们不指向表本身中列的位置。 但是,可以按列号对SELECT *结果进行排序; 如果RowID是公共的,它就被计算为第1列,如果RowID是隐藏的,它就不被计算为第1列。...SELECT子句列表中第三个列表项(C)的数据值按升序排序; 在这个序列中,它按降序对第7个列出的项(J)值进行排序; 在其中,它按升序对第一个列出的项(A)值进行排序。...ORDER BY值列表中的重复列不起作用。 这是因为第二种排序在第一种排序的顺序之内。 例如,ORDER BY Name ASC、Name DESC按升序对Name列进行排序。

    2.6K30

    概述-服务

    Introduction CodeIgniter中的所有类均作为“服务”提供。这仅意味着,要对要调用的类进行硬定义,而不是对要加载的类名称进行硬编码,而是在一个非常简单的配置文件中定义它们。...几乎所有CodeIgniter的类都提供了它们遵循的接口。当您要扩展或替换核心类时,只需要确保满足接口的要求并且知道这些类是兼容的即可。...当您想创建一个提供不同方式创建路由的替代品时,只需创建一个实现以下内容的新类RouterCollectionInterface: class MyRouter implements \CodeIgniter...views/') { return new \CodeIgniter\View\View($viewPath); } 这将在构造方法中设置默认路径,但允许轻松更改其使用的路径: $renderer...getSharedInstance()从工厂方法内部调用的方法很容易处理。这用于检查实例是否已在类中创建并保存,如果没有,则创建一个新实例。所有工厂方法都提供一个 值作为最后一个参数。

    1.7K10

    MySQL数据库命令大全

    by 字段 -- asc -- asc从小到大排列,即升序 -- desc -- desc从大到小排序,即降序 -- 查询年龄在18到34岁之间的男性,按照年龄从小到大到排序 select * from...34) and gender ='女' order by height desc,age asc,id desc; -- 排序有优先级,第一个主排序,后面是次排序,在保证主排序不变的情况下,能排就排,...(height) > 160 and gender='女'; -- limit 起始位置,个数, 这个一定要放在最后 -- 分页 -- limit start, count -- limit 放在最后面...(注意) 起始位置 = (页数-1)*每页的个数 -- 限制查询出来的数据个数 -- 查询前5个数据 select * from students limit 0,5; -- 每页显示2个,第1个页面...order by classes.name asc; -- 当时同一个班级的时候,按照学生的id进行从小到大排序 select classes.name,students.* from students

    3.4K20

    2.31 PowerBI数据建模-窗口函数并不难,真的像窗口一样

    借助图形理解起来很容易,上图中的梯形就形象地展示了窗口,通过这个窗口,实现了“世界那么大,我想去看看”,站在客户B的位置,在一个“窗口”新表(本例中的新表用的是原表本身)中进行了新的计算,在客户B的位置返回了客户...1 不用排名列,直接使用ORDERBY给“窗口”新表的Key排序;2 基于当前行,进行与该行相对位置(也可以是绝对位置)有关的取数;3 有些窗口函数可以返回行序号,用于排名;有些窗口函数可以返回一个一行或多行的表...家族成员窗口函数在微软学习文档的DAX函数分类中,放在了筛选器函数类别下,包括:1 WINDOW,基础窗口函数,取“窗口”新表的一个区间,支持绝对位置和当前行的相对位置;2 OFFSET,WINDOW函数的变体...:排序依据;空白参数:保留的参数位置,暂时无用;PARTITIONBY:窗口内再分小窗口,实现分区排序,如省略,视同只有一个分区;MATCHBY:当“窗口”新表中没有Key(用于排序,每行的值唯一)的时候...举例1WINDOW计算累计求和:按产品销量从大到小累计求和 = CALCULATE([Sales], WINDOW(1,ABS,0,REL,ALLSELECTED(Fact_Sales[产品]),ORDERBY

    4100

    数据分析EPHS(5)-使用Hive SQL计算数列统计值

    对应的统计结果如下: ? 接下来先进入实战部分,最后再总结下本地Hive使用过程中的一些坑。...也就是说,按从小到大排序之后,1的累积概率为10%,小于等于2的累积概率是30%,小于等于3的累积概率是60%,如果按我们之前的理解,中位数就是3,那么按照等频划分的话,中位数是恰好累积概率取得50%的时候的那个数...但二者其实可以统一到一个公式中: 1)假设n = 149 ,(n+1)/2 = 75 ,小数部分为0,那么中位数=75位置的数 * (1 - 0)+ 76位置的数 * (0 - 0) 2)假设n = 150...,(n+1)/2 = 75,小数部分为0.5,那么中位数=75位置的数 * (1 - 0.5)+ 76位置的数 * (0.5 - 0) 所以,我们可以把这个过程分解为三个步骤,第一步是给数字进行一个编号...这里小数部分不为0,意味着我们不仅要拿到rank=75的数,还要拿到rank=76的数,我们最好把其放到一行上,这里使用lead函数,lead函数的作用就是拿到分组排序后,下一个位置或下n个位置的数,咱们在后面的博客中还会细讲

    3.2K51
    领券