mysql - MySql 首先按多列排序 NULL 条目
问题描述
我有一个表,如SQL Fiddle所示。
CREATE TABLE `test` (
`id` varchar(250) NOT NULL,
`name` varchar(512) NOT NULL,
`description` text NOT NULL,
`priority` int(11) DEFAULT NULL,
`created_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `test` (`id`, `name`, `description`, `priority`, `created_date`) VALUES
('1', 'John', 'kasdjkaksdj', 3, '2018-07-12 07:37:25'),
('2', 'Doe', 'updations', 1, '2018-07-12 08:56:27'),
('3', 'Matt', 'sdasd', NULL, '2018-07-12 09:09:08'),
('4', 'Jiss', 'vghjgfghj', 1, '2018-07-13 12:33:19'),
('5', 'Noel', 'sdfsdf', NULL, '2018-07-13 12:33:29');
该priority
列是NULL
默认的。用户可以为此列指定任何整数值。我想根据priority asc
和 对表进行排序,其余记录(具有 NULL 优先级)按created_date asc
.
我试过查询
SELECT * FROM `test` ORDER BY priority, created_date
结果 :
id name description priority created_date 3 Matt sdasd (null) 2018-07-12T09:09:08Z 5 Noel sdfsdf (null) 2018-07-13T12:33:29Z 2 Doe updations 1 2018-07-12T08:56:27Z 4 Jiss vghjgfghj 1 2018-07-13T12:33:19Z 1 John kasdjkaksdj 3 2018-07-12T07:37:25Z
但这是显示优先级,NULL
首先是值,然后是按优先级排序的记录。
异常结果:
id name description priority created_date 2 Doe updations 1 2018-07-12T08:56:27Z 4 Jiss vghjgfghj 1 2018-07-13T12:33:19Z 1 John kasdjkaksdj 3 2018-07-12T07:37:25Z 3 Matt sdasd (null) 2018-07-12T09:09:08Z 5 Noel sdfsdf (null) 2018-07-13T12:33:29Z
谁能帮我找到正确的查询。提前致谢。
解决方案
推荐阅读
- javascript - 如何修复“未捕获的类型错误:无法读取未定义的属性‘编号’”?
- websphere - 有没有办法列出来自不同主机的 Websphere 的所有服务器状态?
- jquery - 我想禁用 dayclick 事件
- sql - 通过 2 个参数查找记录,其中一个是数组
- php - 无法连接到 Lightsail 托管数据库 - (HY000/2002):连接被拒绝
- java - 发送另一个味精后如何接收单声道味精
- ionic-framework - 如何在 ionic 4 中提供警报控制器 css?
- c# - 如何从异步方法返回 AggregateException
- r - ggplot2 中的错误图例在基于同一数据集的一个图中具有两种不同的绘图类型
- c# - 我是否正确解释“坏循环”代码?