【发布时间】:2015-12-03 15:25:07
【问题描述】:
最近我们将数据库系统从 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 |
+----------------------+--------------+
有人知道这怎么可能吗?或者可能的解决方案?服务器启用缺少配置?我快疯了。
提前致谢。
【问题讨论】:
-
为什么选择
llx_categorie h?我看不到h的任何用途。删除表格或在适当的字段中添加限定条件,并说明JOIN是如何完成的。还是“交叉连接”?