【发布时间】:2020-12-05 21:24:26
【问题描述】:
我需要将一些 SQLite 查询转换为 MariaDB。
我遇到了一个看起来像这样的请求(并且在 SQLite 中运行良好):
SELECT Foo.id,
Bar.name ||
'_' ||
(SELECT Toto.type
FROM Toto, Titi
WHERE Titi.id = 42
AND Titi.id_Toto = Toto.id
) ||
'/' ||
Tutu.Name
FROM Foo,
Bar,
Tutu,
Titi
WHERE Titi.id = 42
AND Foo.id_Bar = Bar.id
AND Bar.id_Tutu = Tutu.id
AND Tutu.id_Tutu = Titi.id
我把它改成这样:
SELECT
Foo.id,
CONCAT(
Bar.name,
'_',
(SELECT Toto.type
FROM Toto
INNER JOIN Titi
ON Titi.id_Toto = Toto.id
WHERE Titi.id = 42
),
'/',
Tutu.Name
)
FROM Foo
INNER JOIN Bar
ON Foo.id_Bar = Bar.id
INNER JOIN Tutu
ON Bar.id_Tutu = Tutu.id
INNER JOIN Titi
ON Tutu.id_Tutu = Titi.id
WHERE Titi.id = 42
我尝试使用 ||也用于连接,但在这两种情况下我都会遇到错误
错误 SQL (1242):子查询返回多于 1 行
我读到了 GROUP_CONCAT,但它只需要一个请求,没有固定的字符串
有什么方法可以让这个查询在 MariaDB 中工作?
【问题讨论】: