gpt4 book ai didi

mysql - MariaDB 与 Mysql 查询问题

转载 作者:行者123 更新时间:2023-11-28 23:42:46 25 4
gpt4 key购买 nike

最近我们将数据库系统从 MySql 更改为 MariaDB,我们在处理一个查询时遇到了一些问题...

SELECT
(SELECT
IFNULL(label, '') FROM (
SELECT
( SELECT label FROM llx_categorie WHERE rowid = @r And type = 0 ) AS label,
@r As r,
( Select @r := fk_parent FROM llx_categorie WHERE rowid = r And type = 0 ) As parent,
@l := @l - 1 As lvl
FROM( SELECT @r := 732, @l := 5, @cl := 0 ) vars,
llx_categorie h
Where (@l > 0) And type = 0 And @r > 0 And label IS NOT NULL
ORDER BY parent ASC
) as t1
LIMIT 0,1 ) as catlevel1,
(SELECT
IFNULL(label, '') FROM (
SELECT
( SELECT label FROM llx_categorie WHERE rowid = @r And type = 0 ) AS label,
@r As r,
( Select @r := fk_parent FROM llx_categorie WHERE rowid = r And type = 0 ) As parent,
@l := @l - 1 As lvl
FROM( SELECT @r := 732, @l := 5, @cl := 0 ) vars,
llx_categorie h
Where (@l > 0) And type = 0 And @r > 0 And label IS NOT NULL
ORDER BY parent ASC
) as t1
LIMIT 1,1 ) as catlevel2

这只是一个从类别 ID @r732 获取父类别的简单查询。

如果我们在 MySql 上运行它会按预期返回,例如。

+----------------------+--------------+
| catlevel1 | catlevel2 |
+----------------------+--------------+
| Todas las categorías | Sonido-Audio |
+----------------------+--------------+

但是在 MariaDB 中返回这个。

+----------------------+--------------+
| catlevel1 | catlevel2 |
+----------------------+--------------+
| Todas las categorías | NULL |
+----------------------+--------------+

谁知道这怎么可能?或者可能的解决方案?缺少启用服务器的配置?我快疯了。

提前致谢。

最佳答案

我认为问题源于这样的事情:

给定一个带有 ORDER BY 的子查询和一个没有 ORDER BY 的外部查询...

在旧的 MySQL 中,内部顺序在外部 ``SELECT` 中仍然有效。

在 MariaDB 中,未指定的外部顺序是不可预测的。

可能的解决方案:将 ORDER BY parent ASC 移出一级。

另一种可能的解决方案(针对 MariaDB):设置 optimizer_switch='derived_merge=off'(或 optimizer_switch='derived_merge=off,derived_with_keys=off',具体取决于表的结构)。 Reference .

我怀疑您得到“正确”的 catlevel1 而不是 catlevel2 只是巧合。

此外,如果您不使用它,请删除 llx_categorie h

关于mysql - MariaDB 与 Mysql 查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34069764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com