【问题标题】:Want to fetch the MAX ROW in mysql [closed]想在mysql中获取MAX ROW [关闭]
【发布时间】:2020-05-06 19:13:36
【问题描述】:

我有 SQL 查询:

select * from (SELECT COUNT(*) OVER () MAX_ROW, ROW_NUMBER() OVER (ORDER BY 
UNIT_ID asc) RN, EQ.* from COAT.TBL_EQUIPMENT EQ) where RN between 1 and 10

但我必须在 MySQL 中实现相同的功能。 谁能帮帮我。

【问题讨论】:

  • MAX ROW 是什么意思?
  • 添加一些示例数据和预期结果,如果您想重新打开问题。
  • 1) 确保您的 MySQL 版本为 8+,2) 为子查询添加别名。

标签: mysql sql select window-functions


【解决方案1】:

作为初学者:如果您运行的是 MySQL 8.0,则此查询应该按原样工作(前提是您为子查询设置别名,正如 Akina 所评论的那样)。

现在假设您运行的是早期版本,一个选项是 cross join 对总行数进行聚合查询,并增加用户变量以模拟 row_number()

select *
from (
    select e.*, m.max_row, @rn := @rn + 1 rn
    from (select * from tbl_equipment order by unit_id) e
    cross join (select count(*) max_row from tbl_equipment) m
    cross join (select @rn := 0) x
) t
where rn <= 10

实际上你甚至可能不需要子查询:

select e.*, m.max_row, @rn := @rn + 1 rn
from (select * from tbl_equipment order by unit_id) e
cross join (select count(*) max_row from tbl_equipment) m
cross join (select @rn := 0) x
order by e.unit_id 
limit 10

【讨论】:

    猜你喜欢
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多