orderBy排序,null在最后
发表于|更新于
|浏览量:
优于别人,并不高贵,真正的高贵应该是优于过去的自己。——海明威
我们进行排序查询时:
1 | SELECT * FROM `user` ORDER BY username |
可以看到null值排到了最上

如果我们要将null值排到最下方可以使用:
1 | SELECT * FROM `user` ORDER BY ISNULL(username),username |
执行结果:

这是因为ISNULL函数将其转换为了0和1,我们可以顺带查询出来看看:
1 | SELECT *,ISNULL(username) FROM `user` ORDER BY ISNULL(username),username |

相关推荐
2020-12-05
explain
人们很少做他们相信是对的事,他们做比较方便的事,然后后悔。——鲍勃.迪伦 使用explain+SQL 作用: 表的读取顺序 数据读取操作的操作类型 哪些索引可以使用 哪些索引被实际使用 表之间的引用 每张表有多少行被优化器查询 id select_type table partitions type possible_keys key key_len ref rows filtered Extra id:查询的序列号,包含一组数字,表示查询中执行select字句或操作表的顺序id值越大执行优先级越高,id相同情况下执行顺序从上到下 select_type:查询的类型,主要是用于区别普通查询、联合查询、子查询等的复杂查询simple简单的select查询,不包含子查询、UNION primary子查询的最外层 subquery子查询的内层 derived表示 FROM临时表,这个表被标记为衍生 union在union后面的查询,若union包含在from字句的子查询中,外层select被标记为derived union result从union表获取结果的select t...
2022-02-06
INSERT ... ON DUPLICATE KEY UPDATE Statement
打开mysql文档,总会有新发现。——碧安瑶 我们在使用INSERT语句时,有时会有这样的需求,不存在就新增,存在就更新 此时我们可以使用INSERT ... ON DUPLICATE KEY UPDATE语句 就像mysql官方文档中提到的那样,我们如果将a列设为UNIQUE唯一索引或者主键时,并且当前表已经存在了a=1的数据,对于这种情况,下面两条sql的结果是相等的 当然如果不满足上方条件,则会新增一条数据 1234INSERT INTO t1 (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;UPDATE t1 SET c=c+1 WHERE a=1; 对于InnoDB引擎的表,此处的新增可能会触发自增列,但修改操作不会触发 如果上方的唯一索引再加一个b列,则上方第一条sql和下方sql结果相等 1UPDATE t1 SET c=c+1 WHERE a=1 OR b=2 LIMIT 1; 注意如果此处a=1 or b=2匹配多行,则只会更新一行,所以我们需要避免在有多个唯一索引的表上使用本语法 我们在表内没...
2025-01-19
VictoriaMetrics
任凭人群来往,任凭钟声响起,小孩啼哭——决心好好过上一天。——梭罗的《瓦尔登湖》 最近在了解一些性能优化和数据监控的工具时,我发现了一个非常实用的项目——VictoriaMetrics。它是一个高效的时间序列数据库,专为大规模数据监控和存储而设计,特别适合用来存储 Prometheus 格式的时序数据。 VictoriaMetrics 的核心优势是其高性能、高可扩展性和低资源消耗,这使得它非常适合大规模的生产环境,尤其是在处理监控数据和日志数据时。无论是在单节点部署还是集群模式下,VictoriaMetrics 都能提供极高的性能,支持每秒数百万的写入请求和非常快速的查询响应。 VictoriaMetrics 可以通过多种方式进行安装和使用。你可以通过二进制包、Docker 或者 Kubernetes 等方式轻松部署。以下是常见的安装和配置方式: 通过二进制安装你可以从 GitHub Releases 页面下载适用于自己系统的二进制包,解压后运行即可。例如: 1234wget https://github.com/VictoriaMetrics/VictoriaMetri...
2021-01-27
Client does not support authentication protocol requested by server
宿命论是那些缺乏意志力的弱者的借口。——罗曼·罗兰 今天试了试使用js连接数据库,发现报错Client does not support authentication protocol requested by server; consider upgrading MySQL client 乍一看,代码好像没问题 1234567891011121314151617181920var mysql = require("mysql");let connection = mysql.createConnection({ host: "127.0.0.1", port: 3306, user: "root", password: "789456", database: "ruben"});connection.connect();connection.query("select * from user", funct...
2023-04-26
mysql随机查询(二)
活教会我思考,可思考没有教会我生活。——赫尔芩 之前写过mysql随机查询 今天学到一个新方式: 1SELECT * FROM user_info ORDER BY rand() ASC limit 1 非常的简单方便 对应mp的写法: 1List<UserInfo> list = Database.list(Wrappers.query(new UserInfo()).orderByAsc("rand()").last("limit 1"));
2021-07-08
自用模板sql
真正的伟人,能在愚昧和喧嚣的物质世界中,静心倾听荒漠的声音。——深泉学院(美国) 自用sql,我建站时每张表必备如下字段: 12345678DROP TABLE IF EXISTS `common_template`;CREATE TABLE `common_template` ( `id` bigint(0) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键', `gmt_deleted`datetime(0) DEFAULT NULL COMMENT '逻辑删除字段 NULL未删除 有值表示已删除,值为删除时间', `gmt_create` datetime(0) NOT NULL COMMENT '现在时表示主动式创建', `gmt_modified` datetime(0) NOT NULL COMMENT '过去分词表示被动式更新', PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB CH...

阿超
我的名字叫阿超 年龄25岁 家在北京市 职业是软件开发 每天最晚也会在八点前回家 不抽烟 酒浅尝辄止 晚上十二点上床 保证睡足八个小时 睡前写一篇博客 再做二十分钟俯卧撑暖身 然后再睡觉 基本能熟睡到天亮 像婴儿一样不留下任何疲劳和压力 就这样迎来第二天的早晨 健康检查结果也显示我很正常 我想说明我是一个不论何时都追求内心平稳的人 不拘泥于胜负 不纠结于烦恼 不树立使我夜不能寐的敌人 这就是我在这社会的生活态度
Follow Me公告
This is my Blog