【问题标题】:Problem request between MySql And MariaDBMySql 和 MariaDB 之间的问题请求
【发布时间】:2021-03-03 00:05:24
【问题描述】:

我需要你帮忙解决一个问题..

之前,我的网站使用的是 MySql 5.5 现在好像用的是 MariaDB 10.0

我没发现有什么不同,但是……

这个请求(我已经简化了请求以便更好地理解)

select * from ( select * from MYTABLE ) tmpTable ORDER BY tmpTable.id DESC

此请求适用于 Mysql 和 MariaDB

但是……

select * from ( select * from MYTABLE ORDER BY tmpTable.id DESC) tmpTable 

我认为如果我的订单在我的第二个选择中,他不会被考虑

此请求无效!结果很好,但是 ORDER BY 不起作用...它是按 ASCENDING 排序,而不是像我在第二次选择中指定的 DESCENDING ...

有人明白为什么吗? mysql和Maria DB有区别吗?

非常感谢! 祝你有美好的一天

【问题讨论】:

    标签: mysql sql mariadb subquery sql-order-by


    【解决方案1】:

    在 SQL 中,表的行没有预先定义的顺序。您需要order by 对记录集进行排序。

    第二个查询发生的情况是子查询创建了一个派生表,然后在外部查询中使用该表。您在子查询中对行进行排序这一事实并没有什么不同:从外部查询的角度来看,派生表的行没有固有的排序。

    换句话说,不能保证内部排序会传播到外部范围。如果您希望对结果集进行一致排序,请在外部范围内使用 order by

    【讨论】:

    • 非常感谢!但是您知道为什么它适用于 Mysql 而不适用于 MariaDB 吗?它在Mysql上工作是幸运的吗? Mysql 处理这个问题,而 mariaDb 没有?我需要知道是否需要在第一个请求中使用外部 ORDER BY,或者是否最好将 MariaDB 更改为 MYSQL
    • @MathAng:我认为这并不安全,即使在 MySQL 中也是如此。尽管它今天可能有效,但它可能在未来的任何时候中断。
    猜你喜欢
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 2017-01-02
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多