mysql 选择最后 3 个不同的行,但按 asc 排序

标签 mysql sql-order-by distinct

我试图从表格的最后 3 行中选择一个不同的列,然后按升序排列。

感谢任何帮助。

下面的代码给出了以下错误: “‘订单子(monad)句’中存在未知列‘entry_id’”

SELECT * FROM (
    SELECT distinct(column) as sem FROM table ORDER BY entry_id DESC LIMIT 3
) sub
ORDER BY entry_id ASC

最佳答案

您需要子查询返回排序列,否则在外部查询中不可用。

由于在子查询中使用了 distinct,这变得很棘手。正如 Barmar 所评论的,将 entry_id 添加到 select unique 子句可能会破坏 distinct,因此我们可以改为启用聚合:

SELECT column FROM (
    SELECT column, max(entry_id) max_entry_id as sem 
    FROM table 
    ORDER BY max_entry_id DESC LIMIT 3
) sub
ORDER BY max_entry_id 

注意:distinct 不是一个函数,因此它确实隐含了括号。

关于mysql 选择最后 3 个不同的行,但按 asc 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59957124/

相关文章:

mysql - 如何以永久方式对 MYSQL 表进行排序?

mysql - 如何插入批量记录

android - 来自服务器的数据没有进入 android 中的微调器?

sql-server - 如何在不使用动态 SQL 的情况下在存储过程中使用 Order By

sparql - 获取项目的所有 DISTINCT 标签

mysql - 按 MAX(time) WHERE time <= x 选择最近的 MySQL 行

node.js - MongoDB 独特函数和字母排序

c# - 使用 C# 的 MySQL 参数化查询

sql - 如何按列和下一行排序并按另一列排序?

vb.net - VB.NET的LINQ中ORDERBY的语法是什么?