mysql - 如何控制MySQL排序中的nulls-first或nulls-last?

标签 mysql sql group-by sql-order-by

我的数据如下所示:

App ID  Ref Id  App Type  Reg Date
1       1       Main      2017-05-13
2       2       Sub       2017-05-14
3       1       Sub       2017-05-16
4       2       Main      2017-05-15
5       3       Main      2017-05-14
6       1       sub       2017-05-17
7      null     Main      2017-05-20

我想更改此表,如下所示。

App ID  Ref Id  App Type Reg Date
7      null     Main     2017-05-20
4       2       Main     2017-05-15
2       2       Sub      2017-05-14
5       3       Main     2017-05-14
1       1       Main     2017-05-13
6       1       sub      2017-05-17
3       1       Sub      2017-05-16

显示具有相同ref ID的内容,并且具有Main的内容位于顶部。最近注册的内容必须位于顶部。也就是说,我想创建一个层次结构。

我配置了查询,如下所示。

SELECT * 
FROM t 
JOIN (SELECT `Ref Id`, MAX(`Reg Date`) AS maxdate FROM t WHERE `App Type` = 'Main' GROUP BY 1) md USING(`Ref Id`) 
ORDER BY maxdate DESC, `Ref Id`, (`App Type` = 'Main') DESC;

但是,结果如下。即使引用 ID 为空,我也会按注册日期排序。总之,要配置为第二个表,数据7应该在最上面。

App ID  Ref Id  App Type  Reg Date    maxdate
4       2       Main     2017-05-15  2017-05-15
2       2       Sub      2017-05-14  2017-05-15
5       3       Main     2017-05-14  2017-05-14
1       1       Main     2017-05-13  2017-05-13
6       1       sub      2017-05-17  2017-05-13
3       1       Sub      2017-05-16  2017-05-13
7      null     Main     2017-05-20    null

最佳答案

你就快到了,使用left join来获取所有记录,尝试以下操作:

SELECT t.* 
FROM t 
LEFT JOIN (
    SELECT `Ref Id`, MAX(`Reg Date`) AS maxdate
    FROM t
    WHERE `App Type` = 'Main'
    GROUP BY 1
) md USING(`Ref Id`) 
ORDER BY t.`Ref Id` is not null, maxdate DESC, (`App Type` = 'Main') DESC, t.`Reg Date` DESC;

关于mysql - 如何控制MySQL排序中的nulls-first或nulls-last?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44304066/

相关文章:

SQL 服务器 : Where & Like Statements

mysql - 如何从两个表中获取针对 ID (FK) 的多个图像

c# - 使用 LINQ 根据字符串将包含的已知子字符串对字符串列表进行分组

python-2.7 - Pandas groupby + transform 花费数小时处理 6 亿条记录

mysql - 如何获取 MySQL 服务器上每个数据库的空值计数?

php - 选择所有包含非 UTF8 字符的行

php - 获得无限级别的子导航

sql - SQL仅返回最大值

r - Group_By 和 Sum() 给出了意想不到的结果

mysql - 当我尝试通过 http ://localhost/xampp homepage 使用它时,phpmyadmin 拒绝我访问